1

いくつかの情報を画面に出力する実行可能なjarがあります。コストである出力から特定の数値をキャプチャしたい。たとえば、「Cost = 10」という行があり、jarファイルをN回実行したときのコストのリストが必要です。このプロセスを Python スクリプトで自動化したかったのですが、Python は初めてなので、Python スクリプトで stdout からデータを抽出する最良の方法がわかりません。そのようなタスクを実行するための最良の方法は何ですか?

def wrapper(*args):
    process = Popen(list(args), stdout=subprocess.PIPE)
    process.communicate()
    return process

linkFileList = [ join(linkDir,f) for f in listdir(linkDir) if isfile(join(linkDir,f)) ]
nodeFileList = [ join(nodeDir,f) for f in listdir(nodeDir) if isfile(join(nodeDir,f)) ]
pairFileList = [ join(pairDir,f) for f in listdir(pairDir) if isfile(join(pairDir,f)) ]
size = len(linkFileList)
for count in range(0, size):
    x = wrapper('java', '-jar', 'C:\\Users\\fatma\\Documents\\workspace\\HeuristicRunnable.jar', nodeFileList[count], linkFileList[count], pairFileList[count])
4

1 に答える 1

2

あなたは近くにいます。代わりにこれを行いたい:

def wrapper(*args):
    process = Popen(list(args), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    return stdout, stderr

変数stdoutstderrは、jar の stdout および stderr からの出力に対応する単純な文字列になります。いったん変数を使用すると、その変数で何もできないと思うprocessので、それを返すことにはあまり意味がありません。

(また、有用であることが証明された場合に備えて、stderr を取得するために必要なコードも含めました)

于 2013-01-16T19:47:52.550 に答える