파이썬으로 디렉토리 탐색: listdir vs scandir, 상황별 활용법 비교

2024-05-09

파이썬으로 디렉토리의 모든 파일 목록 출력하기

파이썬에서는 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())  # 추가 정보 출력 (디렉토리 여부, 크기, 수정 시간)
  • target_dir: 대상 디렉토리 경로 설정
  • print(file.name): 현재 파일 이름 출력

주의 사항:

  • 위 코드는 현재 디렉토리만 기준으로 파일을 검색합니다. 하위 디렉토리까지 포함하여 검색하려면 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)
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


Python, Pandas, DataFrame을 사용하여 데이터프레임 만들기 및 채우기: 심층 가이드

Pandas에서 빈 데이터프레임을 만드는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 다음과 같습니다.위 코드는 pd. DataFrame() 함수를 사용하여 빈 데이터프레임을 만듭니다. 결과는 행과 열이 없는 빈 테이블입니다...


Pandas DataFrame 열 데이터 형식을 문자열에서 날짜 시간 형식으로 변환하는 방법

다음은 Pandas DataFrame 열 데이터 형식을 문자열에서 날짜 시간 형식으로 변환하는 두 가지 일반적인 방법입니다.pd. to_datetime() 함수는 문자열 값을 Pandas 날짜 시간 객체로 변환하는 데 사용됩니다...


Python 및 NumPy 활용 가이드: 데이터 정리와 분석

argsort 함수는 입력 배열을 복사하여 요소들을 오름차순으로 정렬합니다. 하지만 원본 배열은 변경되지 않습니다.함수는 정렬된 요소들의 인덱스를 새로운 배열로 반환합니다. 이 새로운 배열을 사용하면 원본 배열의 요소들을 정렬된 순서로 참조할 수 있습니다...


NumPy 배열의 특정 차원만 평평하게 만드는 방법

다음은 NumPy 배열의 특정 차원만 평평하게 만드는 두 가지 방법을 설명합니다.reshape() 함수를 사용하면 배열의 모양을 변경할 수 있습니다. 특정 차원을 1로 설정하여 해당 차원을 평평하게 만들 수 있습니다...


PyTorch 텐서의 정확한 값 출력하기 (부동 소수점 정밀도)

이번 글에서는 PyTorch 텐서의 정확한 값을 출력하는 방법에 대해 설명합니다.torch. set_printoptions 함수를 사용하면 텐서 출력 시 설정을 변경할 수 있습니다.위 코드는 텐서의 값을 10자리까지 출력합니다...


python directory