簡體   English   中英

為什么我要通過stderr而不是stdout捕獲子流程輸出?

[英]Why I am capturing subprocess output through stderr and not stdout?

我正在通過子進程運行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捕獲輸出。 請告訴我。

該程序選擇stdout或stderr(在您的情況下為PsExec.exe,您無法修復它)。 通常,stderr用於調試數據,它正是日志文件!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM