Question

Cela fonctionne parfaitement :

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

Ce n'est pas le cas :

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

Cela génère une erreur :Accès refusé:(PID = 560) Je suis sur un environnement Windows et je dois accéder à tous les noms des processus.J'ai déjà un code fonctionnel (l'ancien), donc ma question est plutôt par curiosité.

Qu'est-ce que la try/except les déclarations font dans le premier exemple, et pourquoi cela ne fonctionne-t-il pas si je les supprime dans le second ?

Était-ce utile?

La solution

Toutes les informations de chaque processus ne seront pas disponibles, sauf si vous êtes l'utilisateur root/administrateur.Voir cette question : python psutil sur Windows donne un accès refusé.

Vous feriez mieux de modifier votre premier exemple pour détecter spécifiquement ces cas, avec :

try:    
    if str(psutil.Process(pid).name()) == name:      
        return True    
except AccessDenied:    
    print "Unable to access PID:",pid
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top