디렉토리 탐색하기

현재 디렉토리 아래의 모든 파일(서브디렉토리 포함)의 목록을 얻고자 할 때는 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:\')를 넣었더니 엄청나게 큰 파일 생성됩니다.

정규직으로 줄바꿈 제거하기

간혹보면 가독성을 위해 엔터키를 마구쳐 내려간 글들이 있습니다.보기엔 좋지만, 출력할때는 많이 불편합니다. 그럴땐 '찾아 바꾸기' 기능을 이용해 해결할 수 있습니다. 물론 정규식을 지원하는 에디터에서 말입니다. Sublimetext, visual studio code, atom 등등의 에디터에서 다음을 실행해 보세요.

http://i1.wp.com/blog.singihae.com/wp-content/uploads/sites/2/2014/02/sublime-text.png
  1. Ctrl + H 를 누른 후 (or Find > Replace)에 입력 창에 ^n 을 입력한다.

  2. “regular expression”을 선택한다. (Alt + R을 누르거나 [.*] 아이콘을 클릭)

  3. 그리고 Replace All를 누르면 모든 줄 바꿈이 삭제 됩니다.