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

Python으로 Windows에서 숨김 파일을 제외한 파일·디렉터리 목록 가져오는 방법

Unix 계열 운영체제(macOS, Linux 등)에서는 숨김 파일과 디렉터리가 항상 마침표(.)로 시작합니다. 따라서 간단한 startswith 검사만으로 이를 쉽게 필터링할 수 있습니다.

반면 Windows에서는 파일 이름만으로는 숨김 여부를 알 수 없습니다. 파일 시스템에 저장된 파일 속성(FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_SYSTEM 등)을 직접 조회해야 숨김 파일인지 판별할 수 있습니다.

Windows에서 속성을 확인하려면 pywin32 패키지가 필요하며, 아래 명령으로 설치할 수 있습니다:

pip install pywin32

예시 코드

다음 코드는 운영체제를 자동으로 판별하여, Windows에서는 파일 속성을, Unix 계열에서는 파일 이름 접두사를 검사해 숨김이 아닌 파일 목록만 반환합니다.

import os
if os.name == 'nt':
    import win32api, win32con

def file_is_hidden(p):
    if os.name == 'nt':
        attribute = win32api.GetFileAttributes(p)
        return attribute & (win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM)
    else:
        return p.startswith('.')  # linux-osx

file_list = [f for f in os.listdir('.') if not file_is_hidden(f)]
print(file_list)

코드 설명

  • os.name == 'nt': 현재 실행 환경이 Windows인지 확인합니다.
  • win32api.GetFileAttributes(p): 해당 경로의 파일 속성 값을 가져옵니다.
  • attribute & (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM): 비트 연산(AND)을 통해 숨김 또는 시스템 속성이 설정되어 있는지 검사합니다. 값이 0이 아니면 숨김 파일로 판단합니다.
  • 리스트 컴프리헨션을 사용해 현재 디렉터리('.')에서 숨김이 아닌 파일만 골라 목록을 만듭니다.

이 방식을 활용하면 플랫폼에 관계없이 동일한 인터페이스로 숨김 파일을 제외한 깔끔한 파일 목록을 얻을 수 있습니다.