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

Python os.listdir() 사용 시 숨겨진 파일 무시하는 방법

운영체제별 숨김 파일 처리 방식

Unix 계열 운영체제(macOS, Linux 등)에서는 숨김 파일이 점(.)으로 시작하므로, 간단한 startswith() 검사만으로도 손쉽게 필터링할 수 있습니다. 반면 Windows에서는 파일 이름만으로는 숨김 여부를 판단할 수 없기 때문에, 파일 속성을 직접 확인한 후 숨김 파일인지 결정해야 합니다.

예제 코드

다음 코드를 활용하면 숨김 파일을 제외한 디렉터리 목록을 얻을 수 있습니다.

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가 Windows('nt')인 경우에만 win32apiwin32con 모듈을 불러옵니다. 이 모듈들은 별도의 pywin32 패키지 설치가 필요합니다.
  • file_is_hidden() 함수: Windows 환경에서는 GetFileAttributes()로 파일 속성을 조회하여 숨김(HIDDEN) 또는 시스템(SYSTEM) 속성이 설정되어 있는지 검사합니다. 그 외 Unix 계열 환경에서는 파일명이 .으로 시작하는지만 확인합니다.
  • 리스트 컴프리헨션: os.listdir() 결과에서 숨김 파일을 제외한 최종 파일 목록을 생성하고 출력합니다.

이처럼 운영체제에 따라 적절한 판별 로직을 분기 처리하면, 어떤 플랫폼에서든 숨김 파일 없이 깔끔한 디렉터리 목록을 얻을 수 있습니다.