gpt4 book ai didi

python - 在 Linux 环境中使用子进程运行 shell 命令时,在 python 2.7 中转义连字符

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:59 24 4
gpt4 key购买 nike

我从这里得到了一些帮助来获取此代码

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com