:: 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