コマンドラインで私がすること:
cat file1 file2 file3 > myfile
私がPythonでやりたいこと:
import subprocess, shlex
my_cmd = 'cat file1 file2 file3 > myfile'
args = shlex.split(my_cmd)
subprocess.call(args) # spits the output in the window i call my python program
このようなコマンドをサブプロセスで実行しても、出力はありません。> myfileがcat file1 file2 file3からの出力をpythonにリダイレクトせずに実行したいですか?
—
PoltoS、2011
@PoltoS一部のファイルを結合して、結果のファイルを処理したい。猫を使うのが一番簡単な方法だと思いました。それを行うためのより良い/ pythonicな方法はありますか?
—
catatemypythoncode
os.sendfile()
ベースのソリューションが可能であり、参照pythonで、UNIXのcatコマンドに再現する
出力のリダイレクト( '>'または '>>')はサブプロセスでは機能しないと思います。Popen(少なくともPython 2.7では)(shell = Trueモード)この例では、他の人が指摘しているように、回避できますこれはリダイレクトを使用しないことによりますが、他の場合にはリダイレクトが役立ちます。サブプロセスでリダイレクトまたはパイピングがサポートされていない場合、Popenを文書化する必要があります(これが修正されるまで、os.system()は非推奨にしないでください)
—
Ribo