Python,使用subprocess.Popen调用Linux命令时出现"[Errno 2]没有这样的文件或目录"错误?
我正在尝试了解关于subprocess.Popen的信息,因为我想在Linux命令行中调用一些命令。我按照下面的方式尝试,但出现了错误“[Errno 2] No such file or directory”。我并不是想打开一个文件,所以我不明白这个错误的意思。而且,当我使用普通的os.popen时,它运行得很好(虽然有其他问题,比如我不想等待进程完成时的情况)。
我似乎无法弄清楚该怎么做,任何建议都很感激。
补充说明:我使用的命令比较复杂,并且有变量,所以在这里提到会显得不太合适。我觉得可以说的是,当我使用os.popen
时代码是可以工作的,而用新方法时就不行,所以“Linux命令行调用”显然不是我正在使用的调用。
subprocess.Popen([r"linux command line call"])
>>> [Errno 2] No such file or directory
1 个回答
17
import subprocess
proc=subprocess.Popen(['ls','-l']) # <-- Change the command here
proc.communicate()
Popen
这个东西需要你给它一个字符串列表。第一个字符串通常是你想要运行的程序,后面的是它的参数。有时候,当命令比较复杂时,使用 shlex.split
可以帮你自动把这些字符串整理成列表,这样会方便很多:
import shlex
proc=subprocess.Popen(shlex.split('ls -l'))
proc.communicate()