[英]Using ls in Python subprocess.Popen function
proc = subprocess.Popen(['ls', '-v', self.localDbPath+'labris.urls.*'], stdout=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
print line
else:
break
當使用上面的代碼時,我得到錯誤提示:
ls: /var/lib/labrisDB/labris.urls.*: No such file or directory
但是,當我在shell中執行相同操作時,我沒有得到任何錯誤:
ls -v /var/lib/labrisDB/labris.urls.*
同樣,這也不會產生任何錯誤:
proc = subprocess.Popen(['ls', '-v', self.localDbPath], stdout=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
print line
else:
break
為什么第一個代碼失敗? 我想念什么?
您會收到錯誤消息,因為python 子進程無法像bash一樣擴展*。
像這樣更改代碼:
from glob import glob
proc = subprocess.Popen(['ls', '-v'] + glob(self.localDbPath+'labris.urls.*'), stdout=subprocess.PIPE)
以下是有關python中的glob擴展和解決方案的更多信息: Python子進程中的Shell擴展
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.