如何强制subprocess.Popen / os.Popen直接将大输出写入文件,而不在缓冲区中保存任何内容? 我试过这个:
os.popen(cmd, bufsize=0)
它没有任何帮助。
读取所有输出(同样,大输出)并将其保存到文件/列表的任何解决方案都会有所帮助。
答案 0 :(得分:2)
这是将stdout
重定向到文件的方法:
import sys
sys.stdout = open('your_file', 'w')
然后shell中输出的所有内容都会被转储到该文件中。
答案 1 :(得分:2)
您可以使用stdout
参数将输出从子进程重定向到文件:
import shlex
from subprocess import check_call
with open('outputfilename', 'wb', 0) as outputfile:
check_call(shlex.split(cmd), stdout=outputfile)
你知道我应该在命令中添加什么来阻止子进程将警告/错误打印到shell吗?
只需设置stderr=subprocess.STDOUT
即可合并stdout / stderr。或者将stderr
重定向到os.devnull
以丢弃输出。