我正在通过子进程运行PSExec工具。如果psexec(不是远程计算机上的工具)无法启动,我需要打破。因此,我正在捕获文件中的所有命令提示输出并解析它:
logfile = file('Ocd_Log.txt','w')
try:
process = subprocess.Popen(r'"C:\Program Files (x86)\PSTools\PsExec.exe" -s -i 1 -d -u administrator -p pwd \\10.200.20.20 cmd.exe /k "C:\Osprey_OCD_Daemon_xtensa_9.lnk"', stdout = subprocess.PIPE,stderr = subprocess.PIPE)
for line in process.stderr:
print ' '
sys.stderr.write(line)
logfile.write(line)
process.wait()
上面的代码运行良好,并将所有命令行捕获到日志文件中。但我无法理解为什么我需要通过process.stderr捕获输出而不是process.stdout。请告诉我。
答案 0 :(得分:1)
程序选择stdout或stderr(在你的情况下是PsExec.exe,你不能修复它)。通常,stderr用于调试数据,它正是日志文件!