0

次のようなインタラクティブな引数を取るVisual Studioアプリケーションがあります

- PATH 

input では MENU #1 が表示され (ここでも引数/ユーザー入力を受け入れます)、再び input では MENU #2 が表示されます。

この VS アプリケーション (exe) を Python から呼び出す必要があります。Python 2.5 バージョンに固執するには制限があります。

subprocess.popen と stdin.write を使ってみました。

MENU#1 を解析することはできますが、MENU #2 に進むことはできません...

上記を達成するためのヒント/例。

私のコードは次のようになります:

p = subprocess.Popen('app.exe',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
p.stdin.write(file_path)  # for menu 1

time.sleep(0.5)

p.stdin.write('0')         # for menu 2..

...

o,e = p.communicate()
4

1 に答える 1

1

代わりにpexpectモジュールを使用してください。subprocess モジュールよりもはるかに優れたインタラクティブな入力でプログラムを制御できます。

import pexpect

p = pexpect.spawn('app.exe')
p.sendline(file_path)
p.expect('Menu #2:.*')
p.sendline('0')

Windows の場合は、代わりに、Windows コンソールへwexpect.pyのモジュールのポートを使用できます。pexpect

于 2012-08-23T08:43:35.133 に答える