Modulo Psutil di Python e un problema bizzarro
Domanda
funziona perfettamente:
def find_processes():
name = "ProcessName.exe"
pid_list = psutil.get_pid_list()
for pid in pid_list:
try:
if str(psutil.Process(pid).name()) == name:
return True
except:
pass
return False
.
questo no:
def find_processes():
name = "ProcessName.exe"
pid_list = psutil.get_pid_list()
for pid in pid_list:
if str(psutil.Process(pid).name()) == name:
return True
return False
.
Solleva un errore: Accessdened: (PID= 560) Sono in un ambiente Windows e ho bisogno di accedere a tutti i nomi dei processi.Ho già un codice di lavoro (il primo), quindi la mia domanda è più fuori dalla curiosità.
Cosa fanno le istruzioni try
/ except
nel primo esempio e perché non funziona se li rimuovo nel secondo?
Soluzione
Non tutte le informazioni da ciascun processo saranno disponibili a te a meno che tu non sia l'utente / amministratore root.Vedi questa domanda: Python Psutil su Windows dà accesso negato .
.Saresti meglio a cambiare il tuo primo esempio per catturare specificamente questi casi, con:
try:
if str(psutil.Process(pid).name()) == name:
return True
except AccessDenied:
print "Unable to access PID:",pid
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow