Nic*_*ins 25
感谢@ hb2pencil for 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
Run Code Online (Sandbox Code Playgroud)
hb2*_*cil 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()
Run Code Online (Sandbox Code Playgroud)
现在plist包含一个格式化的以空格分隔的进程列表:
这应该很容易用python解析.请注意,第一行数据是列的标签,而不是实际的过程.
请注意,此方法仅适用于Windows!
与用于获取进程的实际python工具相比,子进程命令中的管道信息并不理想.试试psutil模块.要获取进程号列表,请执行以下操作:
psutil.get_pid_list()
Run Code Online (Sandbox Code Playgroud)
我担心你必须在线下载这个模块,它不包含在python发行版中,但这是解决问题的更好方法.要访问您拥有编号的流程名称,请执行以下操作:
psutil.Process(<number>).name
Run Code Online (Sandbox Code Playgroud)
这应该是你正在寻找的.此外,这是一种查找特定进程是否正在运行的方法:
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
Run Code Online (Sandbox Code Playgroud)
这使用可执行文件的名称,例如,要查找powershell窗口,您可以这样做:
process_exists("powershell.exe")
Run Code Online (Sandbox Code Playgroud)
我被get_pid_list()拒绝访问.一个更新的方法适用于Windows和OSX:
import psutil
for proc in psutil.process_iter():
try:
if proc.name() == u"chrome.exe":
print(proc)
print proc.cmdline()
except psutil.AccessDenied:
print "Permission error or access denied on process"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22499 次 |
| 最近记录: |