파이썬(Python)

[ OS ] python os.walk(), 폴더 경로, 파일 경로 확인하기

카루루1007 2022. 10. 28. 23:46
728x90
반응형
SMALL

os.walk() 함수는 os 모듈에 포함되어 있습니다.

사용하시기 전에 os 모듈을 import 해주어야 합니다.

import os

 

먼저 테스트할 폴더의 내용을 살펴보겠습니다.

제가 테스트할 폴더의 내용을 그림으로 도식화 한것입니다.

아래 코드를 살펴보시고 다시 폴더모양을 보시면 이해가 쉬울 수도 있습니다.

test_walk 라는 폴더에는 text_excel, text_hwp, text_text 파일이 있습니다.

또한 text_walk 라는 폴더 아래에는 test1, text1-1, text1-2 라는 폴더가 있습니다.

test1, text1-1, text1-2 폴더에는 별도의 파일은 없습니다.

text1 폴더의 아래에는 test2라는 폴더가 있고

test2 폴더안에는 별도의 파일은 없습니다.

 

os.walk('파일경로')를 사용하면 세가지를 반환합니다.

그 세가지가 무엇인지 알아보려고 합니다.

 

import os 

for (path, dir, filename) in os.walk('X:/블로그/python/test_walk'):

    print(path)

 

[ X:/블로그/python/test_walk ]는 제가 테스트할 폴더입니다.

자신의 상황에 맞는 파일의 경로를 입력하시면 됩니다.

먼저 위 코드의 결과를 살펴보겠습니다.

먼저 폴더의 경로가 출력됩니다.

시작 경로로 입력한 [ test_walk ]폴더부터 시작하여 모든 하위 폴더의 경로를 보여줍니다.

한줄씩 출력되는 것을 보니 str 형태로 반환하는 것 같습니다.

반응형

다음은 print(dir) 을 해보겠습니다.

for (path, dir, filename) in os.walk('X:/블로그/python/test_walk'):

    print(dir)

우선 반환하는 형태는 list 형태입니다.

모든 폴더에 하위폴더가 있는 지 검색해서

하위폴더의 이름을 list 형태로 반환합니다.

먼저 [ test_walk ] 폴더를 검사해보니

그 아래에 [ test1, test1-1, test1-2 ] 폴더가 있다고 알려줍니다.

그 다음 [ test1 ] 폴더를 검사해보니 그 아래에 [ test2 ]폴더가 있다고 알려줍니다.

[ test2 ]폴더 아래는 다른 폴더가 없으므로 빈 list를 반환하고

역시 [ test1-2 ], [ test1-2 ] 폴더 아래에도 다른 폴더가 없으니

빈 list를 반환합니다.

 

이렇게 차례대로 하위폴더의 이름을 list 형태로 반환합니다.

 

마지막으로 dir(filename)을 출력해 보겠습니다.

import os

for (path, dir, filename) in os.walk('X:/블로그/python/test_walk'):
    print(filename)

 

첫번째 폴더에만 파일이 세개가 있었습니다.

폴더내의 파일의 이름을 list 형태로 반환합니다.

다른 폴더에는 파일이 없으므로 비어있는 list를 반환합니다.

 

그럼 다른 폴더에 파일을 하나 넣고 테스트 해보겠습니다.

 

임의로 [ test1-1 ]폴더에 [ 이미지.bmp ]라는 파일을 만들었습니다.

다시 동일하게 파일이름을 출력해보겠습니다.

 

어떤 경로에 어떤 파일이 있는지 한번 살펴보겠습니다.

import os

for (path, dir, filenames) in os.walk('X:/블로그/python/test_walk'):
    for filename in filenames:
        print(path + " : " + filename)

 

앞서 os.walk() 함수는 세가지를 반환한다고 하였습니다.

1. 현재 폴더 및 모든 하위 폴더의 경로를 str 형태로 반환

2. 모든 하위폴더의 이름을 list 형태로 반환

3. 현재폴더 및 모든 하위 폴더에 있는 파일의 이름을 list 형태로 반환

728x90
반응형
LIST