我想将输出和标准错误都重定向到日志文件。很容易,对吧?
python3 /home/user/Utilities/gpu.py L1.py &> log_L1.py.txt &
但是,当我使用系统调用而不是直接调用命令时,我没有得到文件中的输出和标准错误,而是将它们返回到我的屏幕,并且没有创建输出文件。
交错的_runner.py:
import time
import os
scripts=['L1.py','L2.py','L3.py','L4.py','L3_2D.py','L4_2D.py']
waiting=1200
for s in scripts:
command='python3 /home/user/Utilities/gpu.py '+s+' &> log_'+s+'.txt &'
print (command)
os.system (command)
time.sleep(waiting)
然后我跑
python3 staggered_runner.py
我希望只接收 的直接输出staggered_runner.py
,即每次运行的输出print (command)
,并将其余的定向到适当的文件。
我怎么能这样做,同时仍然使用包装器?
使用 shlex 构建您的命令,并使用子进程在命令提示符下执行它。
subprocess.Popen 允许您设置当前工作目录并为 IPC 设置管道。