1

Python 2.7 スクリプトを使用して、GUI からの入力を必要とする Windows アプリを自動化しようとしています。次のように、組み込みの python サブプロセス関数を介して exe を呼び出しています。

サブプロセスのインポート

cc= 'C:\MM\test.exe'

subprocess.call(cc)

exe が呼び出されると、GUI で、入力ファイル (data.txt ファイル) のパスを手動で入力する必要があります。パスに入ると、処理を開始できます。私はどういうわけかこのプロセスを自動化したいと思います。つまり、exeを呼び出してinput.txtを自分で見つけさせ、さらに重要なことに、出力をoutput.txtファイルに出力します。

最初に次の提案を試しました。

サブプロセスのインポート

open(r'C:\MMA\DATA\input.txt', 'r') を入力ファイルとして、open(r'C:\MMA\DATA\output.txt', 'w') を出力ファイルとして: subprocess.call (['C:\MM\test.exe'], stdin=input_file, stdout=output_file)

しかし、これはうまくいきませんでした。exe では、入力ファイルのパスを手動で入力する必要がありました。

ここでの進め方がわかりません。この種の問題の経験がありません。助けていただければ幸いです。前もってありがとう、ポーク。

4

2 に答える 2

2

test.exe input.txt output.txtコマンドラインから手動で実行したときにも機能する場合は、Windows で入力/出力ファイルを引数として渡し、stdin/stdout リダイレクトを使用しない方が堅牢です

from subprocess import check_call

inputfn = r'C:\MMA\DATA\input.txt'
outputfn = r'C:\MMA\DATA\output.txt'
check_call([r'C:\MM\test.exe', inputfn, outputfn], close_fds=True)

test.exe が GUI プログラムの場合は、 SendKeys モジュールを試すことができます (最後の例を参照)。

于 2012-11-11T14:37:21.623 に答える