Módulo psutil do Python e um problema bizarro
Pergunta
Isso funciona perfeitamente:
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
Isso não:
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
Isso gera um erro:Acesso negado:(PID = 560) Estou em um ambiente do Windows e preciso acessar todos os nomes dos processos.Já tenho um código funcionando (o primeiro), então minha dúvida é mais por curiosidade.
O que o try
/except
declarações funcionam no primeiro exemplo, e por que não funciona se eu removê-las no segundo?
Solução
Nem todas as informações de cada processo estarão disponíveis para você, a menos que você seja o usuário/administrador root.Veja esta pergunta: python psutil no windows dá acesso negado.
Seria melhor alterar seu primeiro exemplo para capturar especificamente esses casos, com:
try:
if str(psutil.Process(pid).name()) == name:
return True
except AccessDenied:
print "Unable to access PID:",pid
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow