2016-11-14 10 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

你有這樣的兩種方式,無論是從讀或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

如果我需要這些命令將從文件讀取而不是從用戶讀取? –