从 Python 中的 shell 命令获取标准输出时出现问题

Problems getting stdout back from shell command in Python

我有一行UnixShell代码:

lsusb | sed -e 's/.*ID \([a-f0-9]\+:[a-f0-9]\+\).*//g'

我想从 Python 中的脚本将其传递给 shell 并能够在 stdout 中捕获输出,因为它将在 运行 之后显示在终端中代码行。

但是,我做不到。我试过:

我也试过将 lsusb 写入文件,然后将其传递给 sed 而不是通过管道传输。我尝试传递整行代码并将所有代码设置为 shell 中的一个变量,然后将变量 x 设置为 shell 变量。最后,我尝试将这行代码的输出传递到一个文件并读取其中的内容。

我尝试过的一切都会给我:

如何将我想要的数据以字符串格式传递给 x 变量?这几天一直困扰着我,没有任何帮助。如果我需要使用 Python 3 没关系,即使我更喜欢使用 Python 2.

谢谢大家的帮助!如果您需要更多信息,请询问,我很乐意将它们编辑到此处的问题中,以供所有人查看。

再次感谢!

关于如何在 Python

中捕获 shell 命令的输出有一个很好的答案

Running shell command from Python and capturing the output

在这种情况下,我怀疑你需要使用

subprocess.check_output("lsusb | sed -e 's/.*ID \([a-f0-9]\+:[a-f0-9]\+\).*//g'", shell=True)

您需要 shell=True,否则 Python 会将字符串解释为单个命令,而不是管道。