gpt4 book ai didi

python - 在 Python subprocess.Popen 函数中使用 ls

转载 作者:行者123 更新时间:2023-11-28 21:24:31 26 4
gpt4 key购买 nike

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 subprocess 无法像 bash 那样扩展 *。

像这样更改您的代码:

from glob import glob
proc = subprocess.Popen(['ls', '-v'] + glob(self.localDbPath+'labris.urls.*'), stdout=subprocess.PIPE)

以下是有关 python 中的 glob 扩展和解决方案的更多信息:Shell expansion in Python subprocess

关于python - 在 Python subprocess.Popen 函数中使用 ls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15965017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com