Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 특정 디렉토리의 파일을 반복 처리하는 방법

Python에서 디렉토리 내부의 파일과 폴더를 확인하거나 반복(iteration) 처리해야 할 때 가장 기본적으로 사용되는 방법은 os.listdir() 함수입니다.

os.listdir()로 디렉토리 전체 항목 가져오기

os.listdir(my_path)my_path 디렉토리에 있는 모든 항목(파일과 디렉토리)의 리스트를 반환합니다. 다음과 같이 사용할 수 있습니다:

>>> import os
>>> os.listdir('.')
['DLLs', 'Doc', 'etc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'share', 'tcl', 'Tools', 'w9xpopen.exe']

파일만 골라내기 (isfile 필터링)

위 결과에는 파일뿐만 아니라 하위 디렉토리도 함께 포함되어 있습니다. 만약 파일만 필요하다면 os.path.isfile()을 이용해 필터링하면 됩니다:

>>> import os
>>> file_list = [f for f in os.listdir('.') if os.path.isfile(os.path.join('.', f))]
>>> print(file_list)
['LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'w9xpopen.exe']

여기서 os.path.join('.', f)를 사용한 이유는 isfile()이 경로 전체를 인자로 받아야 정확하게 판별하기 때문입니다. 리스트 컴프리헨션(list comprehension)을 활용하면 한 줄의 코드로 깔끔하게 파일 목록만 추출할 수 있습니다.

참고: 최신 방식인 pathlib 활용

Python 3.4 이상에서는 객체 지향적인 pathlib 모듈을 사용하는 것도 좋은 선택입니다:

>>> from pathlib import Path
>>> file_list = [f.name for f in Path('.').iterdir() if f.is_file()]
>>> print(file_list)

Path.iterdir()는 디렉토리 내 항목을 순회하고, is_file()로 파일 여부를 손쉽게 확인할 수 있어 코드 가독성이 더 뛰어납니다. 상황에 맞게 os 모듈과 pathlib 모듈을 선택해 사용하면 됩니다.