[英]windows python stdout and stderr to two different files
我想将stdout和stderr输出到两个不同的日志文件。 我已经尝试过此代码,但它只会将错误输出到错误日志,但输出不会重定向到runtime.log文件。
该代码正在Windows上运行,并且大部分robocopy是在代码中完成的。
saveerr = sys.stderr
fsock = open('error.log', 'a')
sys.stderr = fsock
saveout = sys.stdout
fsock1 = open('runtime.log', 'a')
sys.stdout = fsock1
sys.stdout区域不起作用。 请让我知道此代码中的任何更正。
这是我的整个代码
import sys
saveerr = sys.stderr
fsock = open('error.log', 'a')
sys.stderr = fsock
saveout = sys.stdout
fsock1 = open('runtime.log', 'a')
sys.stdout = fsock1
##For site AUCB-NET-01 from source folder AUDC-RSTOR-01 E:\Canberra
exit_code1 = subprocess.call('robocopy \\\\aucb-net-01\\d$ \\\\nasaudc01\\remote_site_sync\\aucb-net-01 /E /MIR /W:2 /R:1', shell=True)
print ("exitcoode1=", exit_code1)
感谢大家阅读我的帖子。
如我的评论中所述,您的代码应将您的 stdout转移到文件中。 要使robocopy的标准输出也去那里,只需将每行回显到您的标准输出,如此链接所示
https://stackoverflow.com/a/28319191/6550457
from subprocess import Popen, PIPE
import sys
saveerr = sys.stderr
fsock = open('error.log', 'a')
sys.stderr = fsock
saveout = sys.stdout
fsock1 = open('runtime.log', 'a')
sys.stdout = fsock1
cmd = 'robocopy \\\\aucb-net-01\\d$ \\\\nasaudc01\\remote_site_sync\\aucb-net-01 /E /MIR /W:2 /R:1'
p = Popen(cmd, stdout=sys.stdout, stderror=sys.stderr, bufsize=1, universal_newlines=True)
exit_code1 = p.wait()
请参阅@eryksuns有关自动复制及其退出代码的评论。 http://ss64.com/nt/robocopy-exit.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.