[英]Determining running programs in Python
我如何使用Python來確定當前正在運行的程序。 我在Windows上。
感謝@ 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
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包含一個格式化的以空格分隔的進程列表:
這應該很容易用python解析。 請注意,第一行數據是列的標簽,而不是實際的過程。
請注意,此方法僅適用於Windows!
與用於獲取進程的實際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")
我被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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.