[英]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.