【发布时间】:2020-03-03 12:27:54
【问题描述】:
我只想要带有 python 的 linux 系统上的 wlan 设备名称。我可以使用 shell 脚本获取设备名称:
echo /sys/class/net/*/wireless | awk -F'/' '{ print $5 }'
所以我想在 python 中使用这个subprocess。
import shlex
import subprocess
def main():
echo = shlex.split('echo /sys/class/net/*/wireless')
echo_proc = subprocess.Popen(echo, shell=True, stdout=subprocess.PIPE)
awk = shlex.split("awk -F'/' '{ print $5 }'")
awk_proc = subprocess.Popen(awk, stdin=echo_proc.stdout)
print(awk_proc.stdout)
但我只得到None 作为输出。如果可能的话,我更喜欢subprocess.run() 的解决方案。所以我用run替换了Popen。但随后我收到错误消息AttributeError: 'bytes' object has no attribute 'fileno'。
【问题讨论】:
-
你试过只使用 subprocess.run 吗?
-
是的,但随后我收到错误消息
AttributeError: 'bytes' object has no attribute 'fileno'。我只用 run 替换了 Popen。 -
展示你是如何做到的。听起来你传递了错误的东西。
-
看起来我当前的代码除了
Popen被替换为run。 -
我的意思是用实际代码编辑你的问题。如果某些东西不起作用,那么描述你认为重要的东西并不是一个好的技巧。如果你知道什么是重要的,你就不会问 SO。请具体详细。
标签: python python-3.x bash subprocess shlex