我正在编写一个Python程序,用Popen调用本地二进制文件来捕获其输出。我用os.chdir
将目录更改为它,我已经验证了该文件。但是,以下代码会引发“找不到文件”异常。
谁能告诉我我做错了什么?从我$ PATH中的目录运行程序有什么特别之处吗?提前谢谢。
try:
os.chdir('/home/me')
p = sub.Popen(['./exec', '--arg', 'arg1'], cwd=os.getcwd(), stdout=sub.PIPE)
out, err = p.communicate()
print("done")
except OSError as e:
print("error %s" % e.strerror)
答案 0 :(得分:4)
注意文档的this section(强调我的):
如果cwd不是None,则子项的当前目录将更改为 cwd在执行之前。 请注意,不考虑此目录 在搜索可执行文件时,您无法指定程序的路径 相对于cwd 。
尝试使用Popen
的绝对路径。
p = sub.Popen(['/home/me/exec', '--arg', 'arg1'], stdout=sub.PIPE)
答案 1 :(得分:-2)
要从$ PATH运行程序,只需将shell=True
传递给Popen。
编辑:
同样,正如OP所问,这可以从当前目录运行程序。