我试图通过subprocess.run
运行shell命令,我想将输出重定向到文件,但同时将其显示在stdout上。
我还没有找到一种方法,是否可以在纯Python脚本中实现?
这相当于用bash进行some_command | tee file.txt
。
我总是可以编写一个包装器bash脚本,该脚本将调用python脚本并调用tee,但是如果Python有直接执行此操作的方法,那将很好。
答案 0 :(得分:0)
您可以捕获输出并将其发送到stdout和文件。
Python 3.7 +:
r = subprocess.run(cmds, capture_output=True, text=True)
Python 3.5 +:
r = subprocess.run(cmds, stdout=PIPE, stderr=PIPE)
stdout = r.stdout.decode("utf-8") # specify encoding
示例
import subprocess
r = subprocess.run(['ls'], capture_output=True, text=True)
print(r.stdout)
with open('a.txt','w') as f:
f.write(r.stdout)