2012-11-28 21 views
0

參考my question at SuperUser,我面臨着一個令人費解的情況下使用du -sh /media/ExternalHd/myfolder/*作品從終端預期,但在Python腳本中使用p=subprocess.Popen(['du', '-sh', '/media/ExternalHd/myfolder/*'], stdout=subprocess.PIPE)顯示error du: cannot access /media/ExternalHd/myfolder/*: No such file or directorydu -sh在終端和python腳本中的行爲?

回答

2

終端擴展*爲您服務。 告訴子做:

p=subprocess.Popen('du -sh /tmp/*', shell=True) 

或者你可以使用glob模塊來擴展*自己, 如果你需要更多的控制

+0

謝謝你解決了我的問題:) – Stacked

0

你應該參數shell=True添加到您的subprocess.Popen FUNC 。所以,你可以調用外殼和使用環境變量,文件等水珠

p = subprocess.Popen(['du', '-sh', '/media/ExternalHd/myfolder/*'], stdout=subprocess.PIPE, shell=True) 

然而,你應該避免使用shell=True因爲安全隱患的,看到警告的python subprocess module docs。對於這樣的小腳本,也許它不會產生問題,但要記住;)

有關更多詳細信息,請參見this answer另一個計算器溢出問題。