Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,使用subprocess.Popen进行linux命令行调用?I';“我得到了”;[Errno 2]没有这样的文件或目录";_Python_Command Line_Subprocess_Popen - Fatal编程技术网

Python,使用subprocess.Popen进行linux命令行调用?I';“我得到了”;[Errno 2]没有这样的文件或目录";

Python,使用subprocess.Popen进行linux命令行调用?I';“我得到了”;[Errno 2]没有这样的文件或目录";,python,command-line,subprocess,popen,Python,Command Line,Subprocess,Popen,我试图按照我能找到的有关subprocess.Popen的信息进行操作,因为我想进行linux命令行调用。。我正在尝试如下操作,但得到错误“[Errno 2]没有这样的文件或目录”。我没有试图打开一个文件,所以我不理解这个错误,当我使用一个普通的os.popen时,它可以很好地工作(尽管还有其他问题与等待进程完成有关,而我不希望它完成) 我似乎不知道如何正确地做这件事,任何建议都很感激 编辑:我正在使用的命令是复杂的和可变的,它太脱离上下文而不能包含在这里,我认为只要说当我使用os.popen时

我试图按照我能找到的有关subprocess.Popen的信息进行操作,因为我想进行linux命令行调用。。我正在尝试如下操作,但得到错误“[Errno 2]没有这样的文件或目录”。我没有试图打开一个文件,所以我不理解这个错误,当我使用一个普通的os.popen时,它可以很好地工作(尽管还有其他问题与等待进程完成有关,而我不希望它完成)

我似乎不知道如何正确地做这件事,任何建议都很感激

编辑:我正在使用的命令是复杂的和可变的,它太脱离上下文而不能包含在这里,我认为只要说当我使用
os.popen
时代码可以工作就足够了,而当我使用新方法时就不行了,所以不,“linux命令行调用”显然不是我正在使用的调用

subprocess.Popen([r"linux command line call"])
>>> [Errno 2] No such file or directory

这就是您试图运行的代码吗?当然不是(为什么您会问这个问题?),但是代码是可变的,如果没有上下文,在这里就没有多大意义。。好的,我将用其他一些基本代码测试它,并更新postnevermind,有人已经回答了下面的问题,显然他们能够理解我的意思。您是否应该始终使用“ls”并将命令行调用放在第二部分?你发布的shlex的另一种方式似乎很有效。@Rick:
ls
只是一个例子;您应该用您试图运行的任何实际命令来替换它。我得到了
subprocess.Popen(shlex.split('ls-l'))
来处理基本命令,比如
ls-l
,但是对于我的命令,即启动服务器,我仍然得到“[Errno 2]没有这样的文件或目录”,而同样的命令使用os.Popen工作。这里的命令调用(对于selenium web服务器)太离题了,但我想知道,在不同的调用方式之间,系统接收到的内容是否有任何区别,因为我不知道为什么会这样做this@Rick:可能尝试提供命令中引用的任何文件的完整路径。可能类似于
proc=subprocess.Popen(shlex.split('java-jar/full/path/to/selenium server.jar'))
当然,您应该替换
/full/path/to
import subprocess    
proc=subprocess.Popen(['ls','-l'])  # <-- Change the command here
proc.communicate()
import shlex
proc=subprocess.Popen(shlex.split('ls -l'))  
proc.communicate()