Python에서 디렉터리 안의 모든 파일과 폴더를 알파벳순으로 나열하려면 os.listdir() 함수로 디렉터리의 항목 목록을 가져온 뒤, 내장 함수인 sorted()를 사용해 정렬하면 됩니다.
기본 사용법
os.listdir('.')'은 현재 작업 디렉터리의 모든 항목을 리스트 형태로 반환합니다. 이 리스트를 sorted()에 전달하면 이름순으로 정렬된 새 리스트를 얻을 수 있습니다.
>>> import os
>>> list_dir = os.listdir('.')
>>> sorted(list_dir)
대소문자 구분 없이 자연스럽게 정렬하기
파일명에 대문자와 소문자가 섞여 있으면 기본 정렬 방식(ASCII 코드 순서)에서는 대문자가 소문자보다 먼저 오기 때문에 의도한 순서와 다르게 정렬될 수 있습니다. 이 경우 각 파일명을 모두 소문자로 변환한 후 정렬하면 더 자연스러운 알파벳순 결과를 얻을 수 있습니다.
>>> import os
>>> list_dir = os.listdir('.')
>>> list_dir = [f.lower() for f in list_dir] # 모두 소문자로 변환
>>> sorted(list_dir)
['dlls', 'doc', 'etc', 'include', 'lib', 'libs', 'license.txt', 'news.txt', 'python.exe', 'pythonw.exe', 'readme.txt', 'scripts', 'share', 'tcl', 'tools', 'w9xpopen.exe']
알아두면 좋은 점
os.listdir()이 반환하는 목록의 순서는 운영체제나 파일 시스템에 따라 달라질 수 있으므로, 항상 일관된 순서가 필요하다면 반드시sorted()를 함께 사용해야 합니다.- 원본 파일명의 대소문자를 유지한 채 정렬만 하고 싶다면
sorted(list_dir, key=str.lower)처럼key인자를 활용하는 방법도 있습니다.