繁体   English   中英

将Popen的输出转换为数组

[英]convert the output from Popen to an array

我尝试使用以下脚本在Linux OS上找到进程ID:

  PID = Popen("ps -elf | grep <proc_name>| grep -v grep | awk '{print $4}'", shell=True, stdout=PIPE).stdout
  pid = PID.read()
  pid=int(pid)

但是,如果存在多个具有相同PID的PID,则该脚本不起作用。由于'123 \\ n146 \\ n'不是基于10的int,程序在int()函数处退出

然后,我尝试了以下操作:pid = Pid.read()。split()
打印len(pid)
打印pid [0]

它似乎可以与python命令行一起使用,并形成pid = ['123','156']的数组,但是以某种方式,它在脚本中不起作用。

有什么建议吗? 谢谢

您是否要找出自己的进程ID? 如果是这样,请使用os.getpid()

你可以使用subprocess.check_output()str.splitlines()

from subprocess import check_output as qx

pids = map(int, qx(["pgrep", procname]).splitlines())

要执行此操作而无需外部进程,可以尝试psutil

import psutil # pip install psutil

pids = [p.pid for p in psutil.process_iter() if p.name == procname]

使用p.namep.cmdline实验,并使用procname进行各种比较,以获取特定情况下需要的内容。

还有os.getpid()返回当前的进程ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM