我正在尝试将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"])
答案 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()
的参数中删除的字符。