디렉토리 탐색하기

현재 디렉토리 아래의 모든 파일(서브디렉토리 포함)의 목록을 얻고자 할 때는 os.walk('./')기능을 사용합니다. 아래의 예제 코드를 확인하세요.

# python 2.7 버전
import os
for root, dirs, files in os.walk('./'):
    for file in files:
        print file

os.walk

os.walk는 특정 디렉토리 아래의 모든 디렉토리와 파일의 목록을 얻어 올 수 있도록 도와줍니다. for 루프에서 3개의 아이템으로 구성된 튜플로 분해가 가능한데 이름만으로도 무엇인지 알 수 있습니다. root는 어떤 디렉토리인지, dirs는 root 아래의 디렉토리 목록, 그리고 filesroot 폴더 아래의 파일 목록입니다.

좀 더 많은 기능은 공식 문서를 참고하세요.

스크립트 파일 예제

아래와 같이 스크립트 파일을 만들어 사용해 보았습니다.

#-*- coding: utf-8 -*-
# sub_dir_search.py
# python 2.7 버전
import os
from datetime import datetime

now = datetime.now()
nowDate = now.strftime('%Y%m%d') # 오늘날짜

def allfiles2(path):
    res = []
    for root, dirs, files in os.walk(path):
        rootpath = os.path.join(os.path.abspath(path), root)
        for file in files:
            filepath = os.path.join(rootpath, file)
            res.append(filepath)
        with open(nowDate+'_list.txt', 'w') as f:
            # 오늘날짜_list.txt 파일을 생성합니다.
            for ress in res:
                f.write(ress+'\n')

def main():
    x = raw_input('where to search? : ')
    # 검색할 곳의 위치를 물어봅니다.
    allfiles2(x)

if __name__ == '__main__':
    main()

터미널에 들어가서 다음과 같이 입력합니다.

$ python sub_dir_search.py [폴더명]

루트 폴더('C:\')를 넣었더니 엄청나게 큰 파일 생성됩니다.