這裏的情況是:爲什麼`打印foo.communicate()[0]``從打印foo.communicate不同()`」
我有我運行一個命令:
?import subprocess
foo = subprocess.Popen('ls /', shell=True, stdout=subprocess.PIPE,\
stderr=subprocess.STDOUT)
非常基本的,正確的,我已經想通了,我可以做的東西與輸出與.communicate()
,像這樣:
print foo.communicate()
偉大的工程,併產生輸出,對於subprocess.communicate文檔建議我t應該是一個元組:
('bin\nboot\ncdrom\n[...stuff redacted for brevity...]tmp\nusr\nvar\nvmlinuz\n', None)
請注意\n
換行符在那裏。而且我發現,只是在尋求元組的第一個元素產生輸出用換行,像這樣:
>>> print foo.communicate()[0]
bin
boot
cdrom
[...stuff redacted for brevity...]
tmp
usr
var
vmlinuz
但我不明白的是爲什麼只有第一個元素印刷生產的換行。不要誤解我的意思,這很棒,我很高興我可以在沒有循環的情況下做到這一點,但我想知道發生了什麼。
由於提前,
--jed