このスクリプトを Python スクリプトから実行する必要があります。
それは可能ですか? スクリプトは、いくつかのファイルが書き込まれる出力を生成します。これらのファイルにアクセスするにはどうすればいいですか? サブプロセス呼び出し関数を試しましたが、成功しませんでした。
fx@fx-ubuntu:~/Documents/projects/foo$ bin/bar -c somefile.xml -d text.txt -r aString -f anotherString >output
アプリケーション「bar」はいくつかのライブラリも参照し、出力の他に「bar.xml」ファイルも作成します。これらのファイルにアクセスするにはどうすればよいでしょうか? open() を使用するだけでよいのでしょうか?
ありがとう、
編集:
Python ランタイムからのエラーはこの行だけです。
$ python foo.py
bin/bar: bin/bar: cannot execute binary file
ベストアンサー1
外部プログラムを実行するには、次のようにします。
import subprocess
args = ("bin/bar", "-c", "somefile.xml", "-d", "text.txt", "-r", "aString", "-f", "anotherString")
#Or just:
#args = "bin/bar -c somefile.xml -d text.txt -r aString -f anotherString".split()
popen = subprocess.Popen(args, stdout=subprocess.PIPE)
popen.wait()
output = popen.stdout.read()
print output
はい、bin/bar
プログラムが他のさまざまなファイルをディスクに書き込んだと仮定すると、通常どおり でそれらを開くことができますopen("path/to/output/file.txt")
。必要なければ、サブシェルを使用して出力をディスク上の「output」という名前のファイルにリダイレクトする必要はありません。ここでは、途中でディスクにアクセスせずに出力を Python プログラムに直接読み込む方法を示しています。