我有
subprocess.call(['errcalc', os.path.join(current_out_dir,
'drclog')], stdout=error_summary)
subprocess.call(['errcalc', os.path.join(current_out_dir,
'drclog')], stdout=full_error_summary)
我可以将subprocess.call()输出到多个stdout而不是两次运行命令吗?也许是subprocess.call(['errcalc', os.path.join(current_out_dir, 'drclog')], stdout=[error_summary, full_error_summary])
或其他什么?
subprocess.call(['errcalc', os.path.join(current_out_dir,
'drclog')], stdout=logfile)
for line in logfile:
error_summary.write(line)
full_error_summary.write(line)
答案 0 :(得分:2)
进程具有单个标准输出设备。您不能将多个设备连接到标准输出。
您可以做的是选择一个标准输出设备并附加它。完成此过程后,将输出复制到其他设备。或者,创建一个多路复用输出的设备。创建一个设备,该设备引用了您最终希望接收输出的两个设备。当您连接的输出设备收到输出时,它会将其传递给其他两个设备。
答案 1 :(得分:1)
您可以将输出通过管道输出到tee
命令,该命令会将输出拆分为文件,然后再转换为另一个标准输出。