我从这里得到了一些帮助来获取此代码
command="pidstat -ruht"
#command="pidstat"
process = subprocess.Popen(command, stdout=subprocess.PIPE)
while True:
line = process.stdout.readline()
if line != '':
os.write(1, line)
else:
break
无论我如何逃避,此代码都不起作用 - 作为“pidstat -ruht”或“pidstat\-ruht” 尝试了一些其他组合,也使用 `, ' 等进行转义(基于其他一些论坛)
有人可以帮忙吗? 另外,请指点一本很好的Python学习入门书。
最佳答案
Popen
可以在有或没有 shell 处理的情况下运行程序。默认情况下,Popen
需要命令列表并跳过 shell。您可以使用 shell
参数覆盖它。其中任何一个都可以:
command = ["pidstat", "-ruht"]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
或
command="pidstat -ruht"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
如果您想在命令行上进行 shell 处理(例如,变量替换、管道到其他命令等),那么您要么必须坚持使用 shell=True
版本,要么找出Python的等价物。
您还可以将 while 循环更改为
for line in process.stdout:
os.write(1, line)
关于python - 在 Linux 环境中使用子进程运行 shell 命令时,在 python 2.7 中转义连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60369323/