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?

È stato utile?

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
scroll top