파이썬의 Psutil 모듈과 기괴한 문제
문제
이것은 완벽하게 작동합니다 :
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
.
이것은 다음과 같지 않습니다 :
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
.
오류가 발생합니다. 액세스 코드 : (PID= 560) 나는 Windows 환경에 있으며 모든 프로세스의 이름에 액세스해야합니다.나는 이미 작업 코드 (이전)를 가지고 있으므로 내 질문은 호기심에서 더 많습니다.
첫 번째 예에서 try
/ except
문이 무엇을 수행하는 작업이며 두 번째로 제거하면 작동하지 않는 이유는 무엇입니까?
해결책
루트 사용자 / 관리자가 아니면 각 프로세스의 모든 정보가 제공되지 않습니다. Windows의 Python Psutil 액세스가 거부되었습니다
첫 번째 예제 변경을 변경하면 다음과 같은 경우를 특별히 잡으십시오.
try:
if str(psutil.Process(pid).name()) == name:
return True
except AccessDenied:
print "Unable to access PID:",pid
. 제휴하지 않습니다 StackOverflow