파이썬으로 디렉토리 탐색: listdir vs scandir, 상황별 활용법 비교
파이썬으로 디렉토리의 모든 파일 목록 출력하기
파이썬에서는 os
모듈을 사용하여 디렉토리의 모든 파일을 간편하게 목록으로 출력할 수 있습니다. 두 가지 주요 방법을 살펴보겠습니다.
os.listdir()
함수는 특정 디렉토리 내의 모든 파일과 디렉토리 이름을 리스트로 반환합니다.
import os
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 디렉토리 내 파일 목록 얻기
files = os.listdir(target_dir)
# 파일 목록 출력
for file in files:
print(file)
설명:
import os
:os
모듈 임포트target_dir
: 대상 디렉토리 경로 설정 (예: "/home/user/data")files = os.listdir(target_dir)
:target_dir
디렉토리 내 모든 파일/디렉토리 이름을 리스트files
에 저장for file in files:
:files
리스트에 있는 각 파일 이름 순환print(file)
: 현재 파일 이름 출력
os.scandir()
함수는 os.listdir()
와 유사하지만, 각 파일에 대한 더 많은 정보를 제공하는 OSEntry
객체를 반환합니다.
import os
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 디렉토리 내 파일 목록 얻기
files = os.scandir(target_dir)
# 파일 목록 출력
for file in files:
print(file.name) # 파일 이름만 출력
# print(file.is_dir(), file.size(), file.mtime()) # 추가 정보 출력 (디렉토리 여부, 크기, 수정 시간)
import os
:os
모듈 임포트target_dir
: 대상 디렉토리 경로 설정files = os.scandir(target_dir)
:target_dir
디렉토리 내 모든 파일 정보를OSEntry
객체 리스트files
에 저장for file in files:
:files
리스트에 있는 각OSEntry
객체 순환print(file.name)
: 현재 파일 이름 출력.is_dir()
,.size()
,.mtime()
등 다양한 속성을 통해 추가 정보 출력 가능
주의 사항:
- 위 코드는 현재 디렉토리만 기준으로 파일을 검색합니다. 하위 디렉토리까지 포함하여 검색하려면
os.walk()
함수를 사용해야 합니다. - 특정 파일 형식만 검색하려면
glob
모듈을 활용할 수 있습니다.
예제 코드: 디렉토리의 모든 파일 목록 출력
다음은 앞서 설명한 두 가지 방법을 보여주는 예제 코드입니다.
os.listdir() 사용
import os
# 대상 디렉토리 경로 설정
target_dir = "/home/user/data"
# 디렉토리 내 파일 목록 얻기
files = os.listdir(target_dir)
# 파일 목록 출력
print("파일 목록:")
for file in files:
print(file)
import os
# 대상 디렉토리 경로 설정
target_dir = "/home/user/data"
# 디렉토리 내 파일 목록 얻기
files = os.scandir(target_dir)
# 파일 목록 출력
print("파일 목록:")
for file in files:
print(file.name)
설명:
- 위 코드는
/home/user/data
디렉토리를 기준으로 예시를 제공합니다. 실제 사용 시에는 원하는 대상 디렉토리 경로를target_dir
변수에 설정해야 합니다. os.listdir()
는 간단한 파일 이름만 출력하는 반면,os.scandir()
는 파일 이름뿐만 아니라 디렉토리 여부, 크기, 수정 시간 등 더 많은 정보를 제공합니다.- 출력 결과는 다음과 유사합니다.
파일 목록:
test1.txt
test2.csv
test_dir
...
주의:
- 코드 실행 전에 실제로 사용할 디렉토리 경로를
/home/user/data
와 같이 정확하게 설정해야 합니다. os.walk()
함수를 사용하면 하위 디렉토리까지 포함하여 모든 파일을 검색할 수 있습니다.glob
모듈을 활용하면 특정 파일 형식만 검색할 수 있습니다.
파이썬으로 디렉토리 파일 목록 출력: 대체 방법 및 고급 기능
앞서 소개한 os.listdir()
와 os.scandir()
함수 외에도 파이썬에서 디렉토리 파일 목록을 출력하는 데 활용 가능한 다양한 방법과 고급 기능들이 있습니다. 상황에 맞는 적절한 도구를 선택하여 원하는 결과를 얻는 것이 중요합니다.
특정 파일 형식만 검색하기:
glob
모듈: 특정 패턴에 일치하는 파일만 검색하는 데 유용합니다. 예를 들어,.txt
파일만 검색하려면 다음과 같이 사용할 수 있습니다.
import glob
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 특정 파일 형식만 검색 (예: *.txt)
files = glob.glob(os.path.join(target_dir, "*.txt"))
# 파일 목록 출력
for file in files:
print(file)
하위 디렉토리까지 포함하여 검색하기:
os.walk()
함수: 재귀적으로 하위 디렉토리까지 탐색하며 모든 파일을 찾는 데 사용됩니다.
import os
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 하위 디렉토리 포함 모든 파일 검색
for dirpath, dirnames, filenames in os.walk(target_dir):
for filename in filenames:
filepath = os.path.join(dirpath, filename)
print(filepath)
파일 정보 출력하기:
os.stat()
함수: 특정 파일의 상세 정보 (크기, 수정 시간, 접근 권한 등)를 얻을 수 있습니다.
import os
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 디렉토리 내 파일 목록 얻기
files = os.listdir(target_dir)
# 파일 목록 출력 및 상세 정보 출력
for file in files:
filepath = os.path.join(target_dir, file)
stat = os.stat(filepath)
print(f"{file} (크기: {stat.st_size} bytes, 수정 시간: {stat.st_mtime_ns})")
정렬하기:
sorted()
함수: 파일 목록을 원하는 기준에 따라 정렬할 수 있습니다. 예를 들어, 파일 이름 기준으로 정렬하려면 다음과 같이 사용할 수 있습니다.
import os
# 대상 디렉토리 경로 설정
target_dir = "/path/to/your/directory"
# 디렉토리 내 파일 목록 얻기
files = os.listdir(target_dir)
# 파일 이름 기준으로 정렬
sorted_files = sorted(files)
# 정렬된 파일 목록 출력
for file in sorted_files:
print(file)
추가 기능:
shutil
모듈: 파일 및 디렉토리 복사, 이동, 삭제 등 다양한 파일 작업을 수행하는 데 사용할 수 있습니다.pathlib
모듈: 경로 작업을 더욱 간편하게 처리하는 데 도움이 됩니다.
주의 사항:
- 각 방법의 특징과 활용 상황을 이해하고, 상황에 맞는 도구를 선택해야 합니다.
os.walk()
함수를 사용할 때는 재귀 탐색으로 인해 예상치 못한 파일까지 포함될 수 있으므로 주의가 필요합니다.- 파일 삭제나 복사와 같은 작업을 수행할 때는 신중해야 합니다. 실수로 중요한 파일을 삭제하거나 잘못된 위치로 복사할 수 있기 때문입니다.
python directory