Python を使用して Windows コマンドライン プログラムと対話しようとしています。subprocess
これにはモジュールを使用しています。以下は、プログラムを起動するコードです。
kwargs = dict(stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
p = subprocess.Popen("ansys191.exe", **kwargs)
これにより、プログラムが新しいコンソール ウィンドウで開きます。stdout
次のコードを使用して読み取ることができます。
while True:
line = p.stdout.readline().strip()
if line: print(line)
if line.startswith("BEGIN:") or line.startswith("PREP7:"):
break
起動後、プログラムはBEGIN:
プロンプトで停止します。出ません。ただし、次のようなコマンドを に書き込もうとすると機能しませんstdin
。
p.stdin.write("/prep7")
p.stdout.readline() #Blocks here
コードとウィンドウのスクリーンショットを次に示します。コマンドによって開かれた他のウィンドウはありません。
「/prep7」コマンドを読み取った後、プログラムは何らかのテキストを書き込み、プロンプトstdout
で停止することになっています。PREP7:
ただし、新しいコンソール ウィンドウに何かを入力すると、stdout
.
ここで何か不足していますか?win32gui
ウィンドウへのハンドルを見つけて書き込む必要がありますか?