使用Popen运行本地二进制文件时出现'file not found'错误

Dav*_*vid 5 python subprocess

我正在编写一个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)
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 5

注意本节文档的

\n\n
\n

如果cwd不为None,则在执行之前child\xe2\x80\x99s当前目录将更改为\n cwd。请注意,搜索可执行文件时不考虑此目录,因此您可以\xe2\x80\x99t 指定程序\xe2\x80\x99s 相对于cwd 的路径\n

\n
\n\n

尝试使用绝对路径Popen

\n\n
p = sub.Popen([\'/home/me/exec\', \'--arg\', \'arg1\'], stdout=sub.PIPE)\n
Run Code Online (Sandbox Code Playgroud)\n