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이 아니면 숨김 파일로 판단합니다.- 리스트 컴프리헨션을 사용해 현재 디렉터리(
'.')에서 숨김이 아닌 파일만 골라 목록을 만듭니다.
이 방식을 활용하면 플랫폼에 관계없이 동일한 인터페이스로 숨김 파일을 제외한 깔끔한 파일 목록을 얻을 수 있습니다.