Alp*_*gay 2 python subprocess ls
proc = subprocess.Popen(['ls', '-v', self.localDbPath+'labris.urls.*'], stdout=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
print line
else:
break
Run Code Online (Sandbox Code Playgroud)
使用上面的代码时,我得到错误说:
ls: /var/lib/labrisDB/labris.urls.*: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,当我从shell中获取相同内容时,我没有错误:
ls -v /var/lib/labrisDB/labris.urls.*
Run Code Online (Sandbox Code Playgroud)
这也不会给出任何错误:
proc = subprocess.Popen(['ls', '-v', self.localDbPath], stdout=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
print line
else:
break
Run Code Online (Sandbox Code Playgroud)
为什么第一个代码失败了?我错过了什么?
小智 5
你得到错误,因为python 子进程无法像bash一样扩展*.
像这样更改你的代码:
from glob import glob
proc = subprocess.Popen(['ls', '-v'] + glob(self.localDbPath+'labris.urls.*'), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
以下是有关python和解决方案中的glob扩展的更多信息:Python子进程中的Shell扩展
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |