我有一行Unix Shell代码:
lsusb | sed -e 's/.*ID \([a-f0-9]\+:[a-f0-9]\+\).*/\1/g'
我希望通过Python中的脚本将其传递给shell,并能够捕获stdout中的输出,因为它将在运行该行代码后显示在终端中。
然而,我无法让它做到这一点。我尝试过:
-
设置要保持输出(x)等于的变量
os.system(lsusb | sed -e 's/.*ID \([a-f0-9]\+:[a-f0-9]\+\).*/\1/g')
-
背景
x
变量等于
subprocess.Popen()
将所有这些乱七八糟的东西作为列表插入,将标准输出设置为管道,将标准输出和标准输出设置为
DEVNULL
-
背景
十、
等于
subprocess.check_output()
,再次传入整行代码。
-
背景
十、
等于的输出
run()
我也试过写作
lsusb
然后将其传递给
sed
而不是管道。我尝试过传递整行代码,将所有这些设置为shell中的变量,然后设置变量
十、
等于shell变量。最后,我尝试将这一行代码的输出传递到一个文件并读取其中的内容。
我尝试过的一切都会给我:
如何获取我想要传递给的数据
十、
字符串格式的变量?这已经困扰了我好几天了,没有任何帮助。如果我需要使用Python 3,这是可以的,尽管我更喜欢使用Python 2。
谢谢大家的帮助!如果您需要更多信息,请询问,我很乐意将其编辑到问题中,以供大家查看。
再次感谢您!