파이썬으로 디렉토리 내 모든 파일 나열하기
파이썬에서 디렉토리 내 모든 파일을 나열하는 것은 os 모듈을 활용하면 매우 간단하게 구현할 수 있습니다. os 모듈은 운영체제와 상호작용하는 다양한 기능을 제공하며, 그 중에서도 파일 시스템과 관련된 기능이 많이 포함되어 있습니다.
주요 함수
- os.listdir(path): 지정된 디렉토리의 모든 항목(파일, 디렉토리)의 이름을 리스트로 반환합니다.
- os.walk(top): 디렉토리 트리를 탐색하며, 각 디렉토리에 대한 경로, 디렉토리 목록, 파일 목록을 제공합니다.
예시 코드
os.listdir() 사용
import os
# 디렉토리 경로 설정
directory = "C:/my_directory"
# 디렉토리 내 모든 항목 리스트 가져오기
for filename in os.listdir(directory):
print(filename)
os.walk() 사용 (하위 디렉토리 포함)
import os
# 디렉토리 경로 설정
directory = "C:/my_directory"
# 디렉토리 트리 탐색
for root, dirs, files in os.walk(directory):
for file in files:
print(os.path.join(root, file))
코드 설명
- os.listdir():
- 지정된
directory
경로의 모든 파일과 디렉토리 이름을 리스트로 가져옵니다. for
반복문을 사용하여 각 파일 이름을 출력합니다.
- 지정된
- os.walk():
- 지정된
directory
를 시작으로 하위 디렉토리까지 탐색하며, 각 디렉토리에 대한 정보를 튜플 형태로 반환합니다. root
: 현재 디렉토리 경로dirs
: 현재 디렉토리 내의 하위 디렉토리 목록files
: 현재 디렉토리 내의 파일 목록
- 지정된
추가 기능
- 특정 확장자의 파일만 추출:
for file in files: if file.endswith(".txt"): print(os.path.join(root, file))
- 파일 수정 시간 확인:
import os import time for root, dirs, files in os.walk(directory): for file in files: file_path = os.path.join(root, file) modified_time = time.ctime(os.path.getmtime(file_path)) print(f"{file_path}: Last modified on {modified_time}")
마무리
**os.listdir()**는 간단하게 현재 디렉토리의 파일 목록만 필요할 때 사용하고, **os.walk()**는 하위 디렉토리까지 포함하여 전체 디렉토리 트리를 탐색해야 할 때 사용하면 됩니다.
파이썬으로 디렉토리 내 파일 목록 출력하기: 다양한 예시
특정 확장자의 파일만 추출하기
import os
def find_files_by_extension(directory, extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
print(os.path.join(root, file))
# 사용 예시:
find_files_by_extension("C:/my_projects", ".py") # 모든 .py 파일 찾기
파일 크기 순으로 정렬하여 출력하기
import os
def list_files_by_size(directory):
file_sizes = []
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_p ath)
file_sizes.append((file_size, file_path))
file_sizes.sort(reverse=True)
for size, path in file_sizes:
print(f"{path}: {size} bytes")
# 사용 예시:
list_files_by_size("C:/my_data")
파일 생성 시간 순으로 정렬하여 출력하기
import os
import time
def list_files_by_creation_time(directory):
file_times = []
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
creation_time = os.path.getctime(file_path)
file_times.append((creation_time, file_path))
file_times.sort(reverse=True)
for time, path in file_times:
print(f"{path}: Created at {time.ctime(time)}")
# 사용 예시:
list_files_by_creation_time("C:/my_documents")
특정 문자열이 포함된 파일 찾기
import os
def find_files_containing_string(directory, search_string):
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
if search_string in f.read():
print(file_path)
# 사용 예시:
find_files_containing_string("C:/my_projects", "function")
파일 유형별로 분류하여 출력하기
import os
import mimetypes
def categorize_files(directory):
file_types = {}
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
mime_type, _ = mimetypes.guess_type(file_path)
file_type = mime_type.split('/')[0]
file_types.setdefault(file_type, []).append(file_path)
for file_type, files in file_types.items():
print(f"{file_type} files:")
for file in files:
print(file)
# 사용 예시:
categorize_files("C:/my_documents")
설명:
- 특정 확장자:
endswith()
메소드를 사용하여 확장자를 비교합니다. - 파일 크기:
os.path.getsize()
로 파일 크기를 구하고, 튜플을 이용해 정렬합니다. - 파일 생성 시간:
os.path.getctime()
으로 생성 시간을 구하고,time.ctime()
으로 가독성 있는 형식으로 변환합니다. - 문자열 포함 여부: 파일을 열어 내용을 읽고,
in
연산자로 문자열을 검색합니다. - 파일 유형:
mimetypes.guess_type()
으로 MIME 타입을 추정하고, 파일 유형별로 분류합니다.
주의:
- 인코딩: 파일을 읽을 때 적절한 인코딩을 지정해야 합니다.
- 큰 파일: 매우 큰 파일을 처리할 때는 메모리 사용량에 주의해야 합니다.
- 성능: 많은 파일을 처리할 때는 성능 최적화가 필요할 수 있습니다.
활용:
- 특정 종류의 파일 찾기
- 파일 정리 및 관리
- 데이터 분석
- 백업 시스템 구축 등
파이썬으로 디렉토리 내 파일 목록 출력하기: 다양한 방법과 추가 기능
핵심 모듈: os
파이썬에서 디렉토리 내 파일 목록을 다루는 가장 기본적인 방법은 os
모듈을 활용하는 것입니다. os
모듈은 운영체제와 상호작용하는 다양한 기능을 제공하며, 파일 시스템 관련 작업에 유용하게 쓰입니다.
os.listdir() 함수:
- 예시:
import os
directory = "C:/my_directory"
for filename in os.listdir(directory):
print(filename)
os.walk() 함수:
import os
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
print(os.path.join(root, file))
추가 기능 및 응용
- 특정 확장자의 파일만 추출:
import os
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
if file.endswith(".txt"):
print(os.path.join(root, file))
- 파일 크기 기준 정렬:
import os
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
print(f"{file_path}: {file_size} bytes")
- 파일 생성 시간 기준 정렬:
import os
import time
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
file_path = os.path.join(root, file)
creation_time = os.path.getctime(file_path)
print(f"{file_path}: Created at {time.ctime(creation_time)}")
- 파일 내용 검색:
import os
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
if "keyword" in f.read():
print(file_path)
- 파일 유형별 분류:
import os
import mimetypes
for root, dirs, files in os.walk("C:/my_directory"):
for file in files:
file_path = os.path.join(root, file)
mime_type, _ = mimetypes.guess_type(file_path)
print(f"{file_path}: {mime_type}")
기타 방법
- glob 모듈: 특정 패턴과 일치하는 파일 목록을 가져올 때 유용합니다.
- pathlib 모듈: 객체 지향적인 방식으로 파일 시스템을 다룰 수 있습니다.
주의 사항
활용 예시
- 특정 종류의 파일 찾기: 프로젝트에서 사용하는 모든 이미지 파일 찾기
- 파일 정리 및 관리: 오래된 백업 파일 삭제, 용량이 큰 파일 찾기
- 데이터 분석: 특정 기간 동안 생성된 로그 파일 분석
- 백업 시스템 구축: 중요한 파일을 주기적으로 백업하기
궁금한 점은 무엇인가요?
- 특정 기능을 구현하고 싶으신가요?
- 더 효율적인 방법을 찾고 있으신가요?
- 다른 모듈을 사용해보고 싶으신가요?
python directory