문제

이것은 완벽하게 작동합니다 :

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
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top