在 python 中使用子进程时找不到文件错误

File not found error using subprocess in python

我在 ubuntu 18.04LTS 安装上使用 python 3.6.9,并尝试使用子进程库调用已编译的 C++ 函数。该函数不带参数,所以我认为这应该有效:

subprocess.Popen(["ais"], stdout=subprocess.PIPE)

但是这样做returns

>>> Popen(["ais"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ais': 'ais'

考虑到从同一目录 returns:

调用 os.listdir(),这让我有点困惑
>>> print(os.listdir())
['COM6 ARPA_A.txt', 'dataStream.py', 'arpa.cpp', 'arpa', 'COM7 AIS.txt', 'ais.cpp', 'ais']

要执行文件,您必须使用“./filename”

通过阅读您上面的评论,您必须授予文件可执行权限,可以这样做:

chmod +x ais

这里很好地解释了原因:https://unix.stackexchange.com/a/4432/399463