:: python

python :: os.listdir과 os.walk (파이썬 특정 경로 내 디렉토리와 파일 검색)

토람이 2021. 6. 14. 18:26

다음과 같이 폴더와 파일을 생성해두었다.

 

C:\test
   └ directory1
       └ file4.txt
   └ file1.txt
   └ file2.txt
   └ file3.txt

 

 

1. os.listdir

os.listdir(path)

특정 경로 내에 존재하는 폴더(디렉토리)와 파일 리스트를 검색 (1-depth)

import os

file_path = 'C:\\test'
for file in os.listdir(file_path):
    print(file)

 

위와 같이 작성한 후 실행시키면

directory1
file1.txt
file2.txt
file3.txt

 

이렇게 출력된다.

directory1 폴더 아래의 file4.txt 는 출력되지 않는다.

 

 

2. os.walk

os.walk(path)

특정 경로 내에 존재하는 폴더(디렉토리)와 파일 리스트 뿐만 아니라, 모든 하위 디렉토리 구조를 다 검색

file_path = 'C:\\test'

for file in os.walk(file_path):
    print(file)

 

위 내용을 실행시키면,

('C:\\test', ['directory1'], ['file1.txt', 'file2.txt', 'file3.txt'])
('C:\\test\\directory1', [], ['file4.txt'])

 

listdir 과 출력 형태가 다른 걸 볼 수 있다.

이 경우 directory1 폴더 안의 file4.txt 까지 출력된다.

 

(경로, 경로 내 디렉토리 리스트, 경로 내 파일 리스트)

↑ os.walk 출력 형식

 

각각의 출력 결과를 따로 받아오려면

 

file_path = 'C:\\test'

for (path, dir, file) in os.walk(file_path):
    print("path:", path)
    print("dir:", dir)
    print("file:", file)
    print("----------")

 

요렇게 작성하면 된다.

실행 결과 ↓

 

path: C:\test
dir: ['directory1']
file: ['file1.txt', 'file2.txt', 'file3.txt']
----------
path: C:\test\directory1
dir: []
file: ['file4.txt']

 

특정 경로 내 모든 디렉토리 내에 존재하는 '파일'들만 검색하고 싶으면

os.walk 를 활용하여 위처럼 file 리스트를 활용하면 됨!

300x250