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