본문으로 바로가기

프로세스의 실행 경로 가져오기

category Language/Python 2022. 4. 5. 01:08
728x90
반응형

 

개요

WMI()로 현재 열려있는 파일 경로를 가져오려고 시도해봤습니다. 방법이 나오지 않던 차에 psutil 라이브러리를 이용하면 해결할 수 있었기에  psutil 라이브러리를 통해 현재 열려있는 특정 파일의 경로를 가져와보는 방법을 적어보고자 합니다.
 
 

psutil 설치

psutil은 기본적으로 설치되어있는 라이브러리는 아닙니다. pip 명령어를 통해 설치합니다.

pip install psutil

 

실행 중인 Process 항목 가져오기

import psutil

for process in psutil.process_iter():
	print(process)

process_iter()는 현재 실행되고 있는 process의 정보를 iterable 하게 변환해줍니다. 각각의 process 정보를 for문으로 print 하면 다음과 같은 결과가 나옵니다.

위에서 보이는 프로세스는 각각의 항목에 접근이 가능합니다. 예를 들어 "process.name()" 이면 프로세스 이름만 추출이 가능하게 됩니다. 예를 들어 실행되고 있는 크롬 프로세스 정보들을 가지고 오고 싶다면 다음과 같이 사용하면 됩니다.

import psutil

for process in psutil.process_iter():
	if "chrome.exe" in process.name():
		print(process)



열린 파일 경로 가져오기

예를 들어 현재 열려있는 ". pdf" 파일의 경로를 가지고 온다 가정하면 그 파일을 통해 열려있는 프로세스의 정보가 필요합니다. 저는 Adobe Acrobat Reader DC 프로세스를 이용해 열려있는 PDF 파일로 테스트해봤습니다. Adobe Acrobat Reader DC는 작업 관리자를 통해 프로세스 이름을 보면 "AcroRd32.exe"라고 표기되어 있습니다. 그리고 psutil을 이용하여 관련 프로세스의 정보를 얻을 때는 pid가 필요합니다. 

import psutil

for process in psutil.process_iter():
	if "AcroRd32.exe" in process.name():
    	print(process)
        print(process.name())
        print(process.pid)

아래의 결과를 얻을 수 있습니다.

AcroRd32.exe 관련 pid를 이용해 Process 정보를 얻어오고 .as_dict() 를 이용해 관련 프로세스의 자세한 정보를 얻어올 수 있습니다.
p = psutil.Process(process.pid)
p.as_dict()

딕셔너리 형태에서 Key 인 'cmdline'에 있는 Value 들을 보시면 AcrodRd32.exe 가 보이고 밑에 현재 실행되고 있는 pdf 파일 경로가 보입니다.

 

Reference

Stackoverflow
https://stackoverflow.com/questions/2023608/check-what-files-are-open-in-python
Psutil documentation
https://psutil.readthedocs.io/en/latest/

 

 

728x90
반응형

'Language > Python' 카테고리의 다른 글

Boolean Trap  (0) 2022.04.07
구글 스프레드시트 이용 시 gspread 설정하기  (0) 2022.04.07
UserAssist 레지스트리 분석  (0) 2022.04.03
0은 False이다 !!  (0) 2022.04.03
pyinstaller의 EXE파일, 소스 코드 열어보기  (0) 2021.09.19