subprocess.Popen()不执行命令?

问题描述 投票:0回答:1

我想在整个python中执行命令并想返回输出

命令是:ls /sys/class/net/ | sed -n '/e.*/p'

它返回以e开头的连接接口的名称>

使用终端,我得到的输出为:eth0 eth1,这是预期的

但是使用python时,我是这样执行的

out = subprocess.Popen(["ls", "/sys/class/net/", " | ", "sed -n '/e.*/p'"],
                        stdout=subprocess.PIPE,
                       stderr=subprocess.STDOUT,)
 stdout,stderr = out.communicate()
 print(stdout)

预期输出为eth0 eth1

但输出:

ls:无法访问'| ':没有这样的文件或目录\ nls:无法访问'sed -n'\''/ e。* / p'\''''':没有这样的文件或目录/ sys / class / net /:\ neth0 \ neth1 \ nlo \ nwifi0 \ nwifi1 \ nwifi2 \ n

这里是什么问题?

我想在整个python中执行该命令,并希望返回输出命令:ls / sys / class / net / | sed -n'/e.*/p'返回以e ...

python subprocess command
1个回答
0
投票

您必须更改工作目录,然后将shell = True提供给Popen()

© www.soinside.com 2019 - 2024. All rights reserved.