我有一些代碼,它是一個標準命令stdout。stdout/stderr元組或字符串輸出
params = [toolsDir + "\\adb.exe", "shell", "pm", "path", app]
p = Popen(params, shell=False, stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
if "package:" in stdout:
package = stdout[8:].rstrip()
第3行,返回字符串,如第5行然後成功地工作而不會出現錯誤,我可以拆分和rstrip()可以在「包」。
stdout, stderr = p.communicate()
但是...如果我從第3行中刪除 '標準錯誤',所以它最終成爲
stdout = p.communicate()
我得到的錯誤:
package = stdout[8:].rstrip()
AttributeError: 'tuple' object has no attribute 'rstrip'
有人能解釋爲什麼這因爲stderr甚至沒有被定義爲第二行Popen上的管道,所以爲什麼它會返回一個沒有stderr的元組,而是一個字符串呢?
我已經解決了這個問題,雖然花了我30分鐘,現在想知道爲什麼它很重要。 謝謝。
完美無缺,非常感謝。 – number12