subprocess:FileNotFound

时间:2016-01-27 19:11:30

标签: python-3.x command subprocess

有人可以向我解释这个错误:

>>> def j():
...     import subprocess
...     print(subprocess.Popen(['command', '-v', 'nmcli'],     stdout=subprocess.PIPE, stderr=subprocess.PIPE))
... 
>>> j()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in j
File "/usr/lib/python3.4/subprocess.py", line 859, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.4/subprocess.py", line 1457, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'command'

我尝试将字符串作为列表,但它不会改变任何内容。

谢谢,

1 个答案:

答案 0 :(得分:2)

  

FileNotFoundError:[Errno 2]没有这样的文件或目录:'command'

command是内置的shell。 subprocess.Popen默认情况下不会运行shell。

要运行shell,请传递shell=True

>>> import subprocess
>>> subprocess.check_output('command -v python', shell=True)
b'/usr/bin/python\n'

要查找可执行文件的完整路径,您可以use shutil.which() instead

>>> import shutil
>>> shutil.which('python')
'/usr/bin/python'