在Python中确定正在运行的程序
我想知道怎么用Python来查看现在正在运行的程序。我是在Windows系统上。
4 个回答
8
从子进程命令获取信息并不是最理想的方式,建议使用一个专门的Python工具来获取进程信息。可以试试psutil这个模块。要获取进程编号的列表,可以这样做:
psutil.get_pid_list()
不过你需要在网上下载这个模块,它不包含在Python的默认安装包里,但这是解决你问题的更好方法。要获取某个进程的名称,可以使用这个编号:
psutil.Process(<number>).name
这应该就是你想要的结果。此外,这里有一种方法可以检查某个特定的进程是否正在运行:
def process_exists(name):
i = psutil.get_pid_list()
for a in i:
try:
if str(psutil.Process(a).name) == name:
return True
except:
pass
return False
这个方法是通过可执行文件的名称来查找的,比如说,如果你想找到一个powershell窗口,可以这样做:
process_exists("powershell.exe")
11
import os
os.system('WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid')
f = open("C:\ProcessList.txt")
plist = f.readlines()
f.close()
现在,plist包含一个格式化的、用空格分开的进程列表:
- 第一列是正在运行的可执行文件的名称
- 第二列是代表正在运行的进程的命令
- 第三列是进程的ID
用Python来解析这个应该很简单。请注意,数据的第一行是列的标签,而不是实际的进程。
请注意,这种方法只适用于Windows系统!
26
感谢@hb2pencil提供的WMIC命令!下面是如何在不使用文件的情况下将输出结果传递下去的方法:
import subprocess
cmd = 'WMIC PROCESS get Caption,Commandline,Processid'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
print line