Le module psutil de Python et un problème bizarre
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 ?
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