繁体   English   中英

Windows python stdout和stderr到两个不同的文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM