python subprocess & popen 语法无效

python subprocess & popen invalid syntax

我是脚本新手。我在 bash 中有这一行 我正在尝试在 python 中写入。

numcpu = ($(cat /proc/cpuinfo | grep 'physical id' | awk '{print $NF}' | sort | uniq | wc -l))

我试过使用 sub 和 popen 但无法正常工作。这是行:

numcpu = sub.Popen('($(cat /proc/cpuinfo | grep 'physical id' | awk '{print $NF}' | sort | uniq | wc -l))',stdout=sub.PIPE,stderr=sub.PIPE)

一直报错。关于问题是什么或我可以做的其他方式的任何想法?我知道也许导入和调用 os?

我正在使用 Python v2.6,但无法升级。

那么,如果您使用与字符串中包含的引号相同的引号,Python 应该如何知道字符串的开始或结束位置?切换到使用 " 双引号括起您的 shell 命令。

此外,您需要告诉 subprocess 使用 shell 到 运行 您的命令,否则它会直接尝试 运行 命令(因此不支持 shell 语法):

numcpu = sub.Popen("($(cat /proc/cpuinfo | grep 'physical id' | awk '{print $NF}' | sort | uniq | wc -l))",
                   shell=True, stdout=sub.PIPE, stderr=sub.PIPE)

您可能只想直接从 proc/cpuinfo 中读取,然后在 Python 中进行处理:

cpu_ids = set()
with open('/proc/cpuinfo') as cpuinfo:
    for line in cpuinfo:
        if 'physical id' in line:
            cpu_ids.add(line.rsplit(None, 1)[-1])
numcpu = len(cpu_ids)