파이썬으로 디렉토리 탐색: 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())  # 추가 정보 출력 (디렉토리 여부, 크기, 수정 시간)
  • 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


Python에서 현재 운영 체제 확인하기

os. name 사용:가장 간단하고 직접적인 방법입니다.os. name 변수는 현재 운영 체제의 이름을 문자열로 반환합니다.예를 들어, Linux에서는 "posix", Windows에서는 "nt"를 반환합니다.장점:간결하고 사용하기 쉬움대부분의 운영 체제를 구별하는 데 효과적임...


Django에서 OpenID를 사용하는 최적의 방법은 무엇일까요?

Django에서 OpenID를 사용할 수 있는 몇 가지 방법이 있습니다. 가장 인기 있는 옵션은 다음과 같습니다.어떤 솔루션이 가장 적합한지는 프로젝트의 특정 요구 사항에 따라 다릅니다. django-openid는 간단하고 사용하기 쉬운 솔루션을 찾는 경우 좋은 선택입니다...


파이썬, 팬더스, 데이터프레임에서 빈 열 추가하기: 3가지 간편한 방법

assign() 함수는 기존 데이터프레임에 새로운 열을 추가하는 데 사용되는 편리한 함수입니다. 새로운 열의 이름과 값을 지정하면 데이터프레임에 빈 열이 추가됩니다.insert() 함수는 특정 위치에 새로운 열을 삽입하는 데 사용됩니다...


NumPy where 함수를 활용한 다양한 조건 처리

where 함수는 다음과 같은 기본 구조를 가지고 있습니다.condition: 조건을 나타내는 배열 또는 스칼라 값입니다.true_values: condition이 참일 때 반환할 값들의 배열입니다.false_values: condition이 거짓일 때 반환할 값들의 배열입니다...


대체 방법: Pandas에서 다중 레벨 열 인덱스에서 레벨 삭제

다음은 Pandas에서 다중 레벨 열 인덱스에서 레벨을 삭제하는 방법에 대한 단계별 안내입니다.예제 데이터프레임:레벨 0 삭제:첫 번째 레벨을 삭제하려면 drop() 함수와 level 키워드를 사용합니다.레벨 이름으로 삭제:...


python directory