파이썬에서 디렉터리 항목을 이름 기준으로 정렬하기
파이썬에서 특정 디렉터리의 내용을 이름순으로 정렬된 목록으로 가져오려면, 먼저 os.listdir 함수를 호출하여 디렉터리의 파일과 폴더 목록을 얻은 뒤, sorted 함수를 사용해 이 목록을 정렬하면 됩니다.
대소문자가 섞여 있어도 일관되게 정렬되도록 하려면, 정렬 전에 각 항목을 모두 소문자로 변환하는 것이 좋습니다.
예제 코드
>>> 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('.')는 현재 작업 디렉터리의 모든 파일과 폴더 이름을 리스트로 반환합니다. 이후 리스트 컴프리헨션(list comprehension)을 사용해 각 이름을 소문자로 변환한 후, sorted() 함수에 전달하면 알파벳 순서로 정렬된 새로운 리스트를 얻을 수 있습니다.
만약 대소문자 구분 없이 원본 이름 그대로 결과를 유지하고 싶다면, sorted(list_dir, key=str.lower)처럼 key 매개변수를 활용하는 방법도 있습니다. 이렇게 하면 원래 이름은 그대로 보존되면서 정렬만 소문자 기준으로 수행됩니다.