파일 이름 길이 제한은 위치에 따라 달라질 수 있습니다
일부 운영체제에서는 파일 이름의 최대 길이가 디스크상의 위치에 따라 달라집니다. 예를 들어 UNIX 계열 시스템에서 디렉터리 트리의 여러 위치에 서로 다른 파일시스템을 마운트해 사용하고 있다면, 같은 머신 안에서도 경로마다 허용되는 최대 파일 이름 길이가 다르게 나타날 수 있습니다.
파이썬에서는 os 모듈의 statvfs() 함수와 statvfs 모듈의 상수를 함께 사용하면 특정 경로가 속한 파일시스템의 최대 파일 이름 길이를 쉽게 조회할 수 있습니다.
예제 코드
>>> import statvfs, os
>>> os.statvfs('/')[statvfs.F_NAMEMAX]
4032
>>> os.statvfs('/boot')[statvfs.F_NAMEMAX]
255
코드 설명
os.statvfs(경로)는 지정한 경로가 속한 파일시스템의 통계 정보를 반환합니다. 이때 statvfs.F_NAMEMAX 필드는 해당 파일시스템에서 허용되는 파일 이름의 최대 길이를 나타냅니다.
위 실행 결과를 보면 루트(/) 파일시스템에서는 최대 4032자까지, /boot에 마운트된 파일시스템에서는 최대 255자까지 파일 이름을 사용할 수 있습니다. 즉, 동일한 시스템이라도 경로에 따라 제한 값이 다름을 알 수 있습니다.
참고 사항
파이썬 3에서는 os.statvfs()가 네임드 튜플(named tuple)을 반환하므로 다음과 같이 더 직관적으로 접근할 수도 있습니다:
>>> import os
>>> os.statvfs('/').f_namemax
또한 POSIX 시스템에서는 os.pathconf(경로, 'PC_NAME_MAX')를 사용해 같은 정보를 얻을 수 있으니, 상황에 맞게 선택해서 사용하면 됩니다.