我试图从python运行gphoto2,但没有成功。它只返回未找到的命令。 正确安装了gphoto,因为命令在终端中正常工作。
p = subprocess.Popen(['gphoto2'], shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, executable='/bin/bash')
for line in p.stdout.readlines():
print line
p.wait()
/bin/bash: gphoto2: command not found
我知道osx终端(应用程序)有一些有趣的东西,但是我对osx的了解很少。
对此有什么想法吗?
修改
更改了部分代码,出现了其他错误
p = subprocess.Popen(['gphoto2'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout:
print line
raise child_exception
OSError: [Errno 2] No such file or directory
修改
使用完整路径'/ opt / local / bin / gphoto2'
但是,如果有人想解释使用哪个shell或如何登录并且能够具有相同的功能..?
答案 0 :(得分:7)
使用shell = True
时,subprocess.Popen
的第一个参数应该是字符串,而不是列表:
p = subprocess.Popen('gphoto2', shell=True, ...)
但是,如果可能,应尽量避免使用shell = True
,因为它可以是security risk(请参阅警告)。
所以改为使用
p = subprocess.Popen(['gphoto2'], ...)
(当shell = False
时,或者省略shell
参数时,第一个参数应该是一个列表。)