2016-11-14 6 views
1

cmdと通信する方法はありますか?すべての出力をファイルに保存しますか?レスポンスを保存中にCMDと通信する

私はすべてのコマンドの後に、出力がサブプロセスの最後ではなく保存されることを意味します。

が、私はそれがこのような何かになりたい:

import subprocess 
process = subprocess.Popen('C:\\Windows\\system32\\cmd.exe', stdout=subprocess.PIPE, 
          stdin=subprocess.PIPE) 
while True: 
    with open("log.txt", "a+") as myfile: 
     myfile.write(process.stdout.readlines()) 
     process.stdin(raw_input()) 
+0

この質問をご覧くださいhttps://stackoverflow.com/questions/4417546/constantly-print-subprocess-output-while-proc ess-is-running – timlyo

答えて

1

あなたはこれを行うための2つの方法があり、どちらかと読み取りまたはreadlineの機能からイテレータを作成することにより行います。

 import subprocess 
    import sys 
    with open('test.log', 'w') as f: 
     process = subprocess.Popen(your_command, stdout=subprocess.PIPE) 
     for c in iter(lambda: process.stdout.read(1), ''): 
      sys.stdout.write(c) 
      f.write(c) 

 import subprocess 
    import sys 
    with open('test.log', 'w') as f: 
     process = subprocess.Popen(your_command, stdout=subprocess.PIPE) 
     for line in iter(process.stdout.readline, ''): 
      sys.stdout.write(line) 
      f.write(line) 
+0

私は、コマンドがファイルから読み込まれ、ユーザーから読み込まれないようにする必要があるのですか? –

関連する問題