有没有办法在os.system()中串联python变量?

时间:2019-05-08 17:50:24

标签: python subprocess os.system

我正在尝试将python变量连接到os.system中,该​​命令似乎可以执行,但是并没有正确分配分配的值。

我尝试同时使用os.system和子进程,但是它们都不起作用。这是我的一些尝试。

interface = os.popen("netstat -i | awk '$1 ~ /^w/ {print $1}'")
os.system("iw dev %s station dump" % (interface))

interface = os.popen("netstat -i | awk '$1 ~ /^w/ {print $1}'")
os.system("iw dev" +interface+ "station dump")

p1 = subprocess.Popen(["netstat", "-i"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["awk", '$1 ~ /^w/ {print $1}'], stdin=p1.stdout, 
stdout=subprocess.PIPE)

displayInterface = p2.communicate()[0].decode('ascii')
retrieveMac = subprocess.Popen(["iw", "dev", displayInterface, "station", "dump"])

2 个答案:

答案 0 :(得分:0)

在给定的示例代码中:

interface = os.popen("netstat -i | awk '$1 ~ /^w/ {print $1}'")
os.system("iw dev %s station dump" % (interface))

您正在尝试将字符串连接到文件对象(不可能),因为os.popen()返回连接到管道的打开文件对象,因此无法将文件对象连接到文件字符串。

答案 1 :(得分:0)

在这一行:

displayInterface = p2.communicate()[0].decode('ascii')

displayInterface产生带尾随换行符的字符串。我不知道您是否需要decode(),但是您需要strip换行符。

displayInterface = p2.communicate()[0].rstrip()

如有必要,您可以指定要在rstrip()的参数中删除的字符。

相关问题