23

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
4

3 に答える 3

46

外部プログラムを実行するには、次のようにします。

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プログラムに直接読み込む方法を示します。

于 2010-03-19T01:47:04.100 に答える
19

最も簡単な方法は次のとおりです。

import os
cmd = 'bin/bar --option --otheroption'
os.system(cmd) # returns the exit status

を使用して、通常の方法でファイルにアクセスしますopen()

より複雑なサブプロセス管理を行う必要がある場合は、サブプロセスモジュールが最適です。

于 2010-03-18T22:17:18.557 に答える
8

UNIXの実行可能ファイルを実行します。私は自分のMacOSXで次のことをしました、そしてそれは私のために働きました:

import os
cmd = './darknet classifier predict data/baby.jpg'
so = os.popen(cmd).read()
print so

ここprint soに結果を出力します。

于 2018-06-04T10:28:35.973 に答える