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)
我是脚本新手。我在 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)