提问者:小点点

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


我正在Ubuntu18.04 LTS安装上使用Python3.6.9,并尝试使用子进程库调用编译过的C++函数。 该函数不接受参数,因此我认为这应该是可行的:

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

但这样做会带来回报

>>> 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'

鉴于从同一目录调用os.listdir()将返回以下结果,这对我来说有点困惑:

>>> print(os.listdir())
['COM6 ARPA_A.txt', 'dataStream.py', 'arpa.cpp', 'arpa', 'COM7 AIS.txt', 'ais.cpp', 'ais']

共1个答案

匿名用户

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

从阅读上面的注释开始,您必须为文件授予可执行权限,可执行权限如下:

chmod +x ais

其原因在此有很好的解释:https://unix.stackexchange.com/a/4432/399463