python 하위 폴더 및 파일 검색 (search subdirectorys subfolders files)


하위 폴더에 있는 파일을 모두 컨드롤 해야 할 경우가 있습니다.

python을 이용해 targer 폴더의 하위 폴더, 파일을 찾는 방법을 알아보고자 합니다.


  target 폴더 : test_folder





  1. target 폴더 검색



Python
1
2
3
4
5
6
7
8
9
10
11
import os

def _get_filepath_list_pair(_target_dir) :

    target_dir = os.path.normpath(_target_dir) # remove trailing separator.

    for fname in os.listdir(target_dir):
        full_dir = os.path.join(target_dir, fname)

        print full_dir
        print os.path.isdir(full_dir)
     위와 같이 입력 하게 되면 ▲


     아래와 같이 결과 값이 나타나게 됩니다.▼
1
2
3
4
5
6
7
8
9
10
test_folder/test_1.c
False
test_folder/test_2.c
False
test_folder/test_2_folder
True
test_folder/test_3.c
False
test_folder/test_4.c
False

     이와 같이


1
os.path.isdir()
     : 괄호 안에 있는 것이
     폴더일 경우에는 True
     폴더가 아닐 경우에는 False를 return한다.

     따라서 모든 하위 폴더의 파일을 검색 하기 위해선
     아래와 같이 재귀 함수를 써야 한다.▼
Python 
1
2
3
4
5
6
7
8
9
10
11
12
13
import os

def _get_filepath_list_pair(_target_dir) :

    target_dir = os.path.normpath(_target_dir) # remove trailing separator.

    for fname in os.listdir(target_dir):
        full_dir = os.path.join(target_dir, fname)

        if os.path.isdir(full_dir):
            _get_filepath_list_pair(full_dir)
        else :
            print full_dir

  os.walk


     위와 같이 재귀 함수를 사용하지 않고
     자동 적으로 하위 폴더에 있는 모든 파일을 탐색해주는 라이브러리가 있다.
     os.walk가 바로 그것이다.

     위와 같은 동작을 하는 코드를 os.walk를 이용하면 다음과 같다.▼

Python 
1
2
3
4
5
6
7
8
9
10
import os

def _get_filepath_list_pair(_target_dir) :

    target_dir = os.path.normpath(_target_dir) # remove trailing separator.

    for (path, dir, files) in os.walk(target_dir):
 for fname in files:
  fullfname = path + "/" + fname
  print fullfname

0 댓글