我想在整个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 ...
您必须更改工作目录,然后将shell = True
提供给Popen()