gpt4 book ai didi

python - 将 bash 命令的输出保存到 if..else 语句中的变量中

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:09 25 4
gpt4 key购买 nike

我有以下功能:

def check_process_running(pid_name):
if subprocess.call(["pgrep", pid_name]):
print pid_name + " is not running"
else:
print pid_name + " is running and has PID="

check_process_running(sys.argv[1])

如果我运行脚本,它会给我:

$ ./test.py firefox
22977
firefox is running and has PID=

我需要获取 pid_num 才能进一步处理该进程。我了解到,如果我想创建具有以上 pid 值 22977 的变量,我可以使用:

tempvar = subprocess.Popen(['pgrep', sys.argv[1]], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
pid_num = tempvar.stdout.read()
print pid_num
22977

是否有不需要构造 tempvar 的解决方案,其中 pid 被拾取并保存到 if..else 语句中的变量 pid_num 中,就像它在我的函数中一样?或者,使用子进程只需一次调用 shell 即可创建 pid_num 变量并保持功能像现在一样简单的最直接方法是什么?

编辑:

使用下面的解决方案,我能够重建语句,保持简单并让 pid_num 进一步处理该过程:

def check_process_running(pid_name):
pid_num = subprocess.Popen(['pgrep', sys.argv[1]], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]
if pid_num:
print pid_name + " is running and has PID=" + pid_num
else:
print pid_name + " is not running"

最佳答案

pid_number = subprocess.Popen(['pgrep', sys.argv[1]], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]

也许吧?或者可能更好

pid_number = subprocess.check_output(['pgrep', sys.argv[1]])

关于python - 将 bash 命令的输出保存到 if..else 语句中的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424445/

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