1
import subprocess
import sys

proc = subprocess.Popen(["program.exe"], stdin=subprocess.PIPE) #the cmd program opens
proc.communicate(input="filename.txt") #here the filename should be entered (runs)
#then the program asks to enter a number:
proc.communicate(input="1") #(the cmd stops here and nothing is passed)
proc.communicate(input="2") # (same not passing anything)

Python を使用して cmd を渡し、通信する方法を教えてください。

ありがとう。(Windows プラットフォームを使用)

4

1 に答える 1

6

ドキュメントはこれをcommunicate()説明しています:

プロセスとの対話: stdin にデータを送信します。ファイルの終わりに達するまで、stdout および stderr からデータを読み取ります。プロセスが終了するのを待ちます。

communicate()入力が送信されると、プログラムの実行が終了するまでブロックします。あなたの例では、プログラムは送信後にさらに入力を待ちます"1"が、Python は次の行に到達する前に終了するのを待ちます。つまり、すべてがデッドロックします。

読み取りと書き込みを交互に行いたい場合は、/へのパイプを作成し、それらに対して書き込み/読み取りを行います。stdinstdout

于 2012-10-15T11:28:31.583 に答える