1

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ウィンドウへのハンドルを見つけて書き込む必要がありますか?

4

0 に答える 0