我不知道,如果你看到的標準錯誤居然出現在控制檯上,或只運行到Python未能生成一個進程名爲「嗒嗒」,這是運行示例時產生您提供...
的例子的輸出將是Python的提高的OSError: [Errno 2] No such file or directory
,這是可以預料的,除非你有一個名爲可執行腳本「嗒嗒」的PATH
我做了一個簡單的測試,並寫了一個bash腳本是這樣的:
#!/bin/bash
echo "This is stdout"
echo "This is a failure on stderr" >&2
exit 1
給予該腳本可執行權限,我重複您的例子,而是叫我的腳本(在本地目錄中名爲fail.sh)爲後例如:
import subprocess
cmd = './fail.sh'
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.communicate()
如預期的那樣返回('This is stdout\n', 'This is a failure on stderr\n')
。
因此,也許你真正看到的是,不管節目你試圖調用(如果它不是胡說),根本就不在你的路徑中。
此外還有一個關於在Python中使用str
作爲標籤的註釋:str
是一個內置類型,不應該用作變量或函數的名稱,除非您特別要「過載」內置類型,功能。 string
也是一樣。