Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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
Python2.7-使用Popen从变量执行时添加到命令的引号_Python_Python 2.7 - Fatal编程技术网

Python2.7-使用Popen从变量执行时添加到命令的引号

Python2.7-使用Popen从变量执行时添加到命令的引号,python,python-2.7,Python,Python 2.7,我试图通过套接字将命令从客户端发送到服务器,以便在服务器上执行命令并将输出返回给我。如果命令是一个没有选项的单词,则一切正常。但是,如果我使用诸如netstat-an或dir c:\之类的选项,则该命令无法识别,并且从输出来看,似乎在执行命令之前在命令周围加了引号('“netstat-an”无法识别为内部或外部命令)。我知道它们不会以这种方式保存在变量中,因为我在执行错误检查之前打印了它。请帮忙。下面是我的代码的样子: commout = subprocess.Popen([data], std

我试图通过套接字将命令从客户端发送到服务器,以便在服务器上执行命令并将输出返回给我。如果命令是一个没有选项的单词,则一切正常。但是,如果我使用诸如
netstat-an或dir c:\
之类的选项,则该命令无法识别,并且从输出来看,似乎在执行命令之前在命令周围加了引号(
'“netstat-an”
无法识别为内部或外部命令)。我知道它们不会以这种方式保存在变量中,因为我在执行错误检查之前打印了它。请帮忙。下面是我的代码的样子:

commout = subprocess.Popen([data], stdout=subprocess.PIPE, shell=True)

(out, err) = commout.communicate()

尝试使
data
成为一个参数数组(第一个是实际的命令)

例如:

commout = subprocess.Popen(['netstat', '-an'], stdout=subprocess.PIPE, shell=True)
第一个元素是表示实际命令的字符串(
netstat
),下一个元素是表示第一个参数的字符串(
-an


为了澄清,
Popen(['echo','a','b']
相当于命令行上的
echoab
,而
Popen(['echo','ab']
则相当于
echo“ab”
(即,如果传递列表,则列表中的每个项目都将被单独引用。在这种情况下,只需传递一个字符串即可:

subprocess.Popen(data, stdout=subprocess.PIPE, shell=True)

哇……在经历了所有的挫折之后,这真是太简单了。用括号括起[数据]是有效的。我想我需要括号,以防我有一份清单。非常感谢。