El módulo Psutil de Python y un problema extraño.
Pregunta
Esto funciona perfectamente:
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
Esto 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
Sube un error: Acceso: (PID= 560) Estoy en un entorno de Windows y necesito acceder a todos los nombres de los procesos.Ya tengo un código de trabajo (el primero), por lo que mi pregunta es más por curiosidad.
¿Qué hacen los estados de cuenta de try
/ generacodiCode en el primer ejemplo, y por qué no funciona si los quito en el segundo?
Solución
No toda la información de cada proceso estará disponible para usted a menos que sea el usuario / administrador de Root.Vea esta pregunta: Python Psutil en Windows le da acceso a denegado .
Estaría mejor cambiando su primer ejemplo para captar específicamente estos casos, con:
try:
if str(psutil.Process(pid).name()) == name:
return True
except AccessDenied:
print "Unable to access PID:",pid
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow