保存响应时与CMD通信

2024-04-19 01:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有任何可能的方法与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())

Tags: 文件方法import命令cmd进程windowsstdin
1条回答
网友
1楼 · 发布于 2024-04-19 01:18:12

有两种方法可以做到这一点,一种是从read或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)

相关问题 更多 >