728x90
하위 디렉터리 검색 os.walk(path)
os.walk() 은 인자로 받은 경로에 대해 하위 디렉터리를 검색합니다.
디렉터리 구조는 다음과 같습니다.
C:.
└─data
├─dir_1
├─dir_2
│ ├─dir_1
│ └─dir_2
└─dir_3
import os
PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
for path, dirs, files in os.walk(dir_name):
print(path, dirs, files)
더보기
data ['dir_1', 'dir_2', 'dir_3'] []
data\dir_1 [] ['text_file.txt', 'text_file2.txt']
data\dir_2 ['dir_1', 'dir_2'] ['text_file.txt', 'text_file2.txt']
data\dir_2\dir_1 [] []
data\dir_2\dir_2 [] ['19.png', 'text_file.txt']
data\dir_3 [] ['text_file.txt', 'text_file2.txt']
os.path.join() 함수를 이용해서 출력해보면, 다음과 같이 경로를 얻을 수 있습니다.
import os
PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
for path, dirs, files in os.walk(dir_name):
# print(path, dirs, files)
print(os.path.join(PATH, path))
더보기
c:\Users\Desktop\python\os_\ex8\data
c:\Users\Desktop\python\os_\ex8\data\dir_1
c:\Users\Desktop\python\os_\ex8\data\dir_2
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_1
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_2
c:\Users\Desktop\python\os_\ex8\data\dir_3
모든 경로 구하기
다음과 같이 절대경로를 넣어주시면 위에 예제보다 효율적입니다.
import os
PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
dir_path = os.path.join(PATH, dir_name)
for path, dirs, files in os.walk(dir_path):
print(path)
for file in files:
file_path = os.path.join(path, file)
print(file_path)
더보기
c:\Users\Desktop\python\os_\ex8\data
c:\Users\Desktop\python\os_\ex8\data\dir_1
c:\Users\Desktop\python\os_\ex8\data\dir_1\text_file.txt
c:\Users\Desktop\python\os_\ex8\data\dir_1\text_file2.txt
c:\Users\Desktop\python\os_\ex8\data\dir_2
c:\Users\Desktop\python\os_\ex8\data\dir_2\text_file.txt
c:\Users\Desktop\python\os_\ex8\data\dir_2\text_file2.txt
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_1
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_2
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_2\text_file.txt
c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_2\19.png
c:\Users\Desktop\python\os_\ex8\data\dir_3
c:\Users\Desktop\python\os_\ex8\data\dir_3\text_file.txt
c:\Users\Desktop\python\os_\ex8\data\dir_3\text_file2.txt
또한 os.path.splitext() 를 사용하여 다음과 같이 특정 확장자 추출할 수 있습니다.
import os
PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
for path, dirs, files in os.walk(dir_name):
dir_path = os.path.join(PATH, path)
for file in files:
name, ext = os.path.splitext(file)
if ext == '.png':
file_path = os.path.join(dir_path, file)
print('find file :', file_path)
더보기
find file : c:\Users\Desktop\python\os_\ex8\data\dir_2\dir_2\19.png
응용
'Language > Python' 카테고리의 다른 글
파이썬 OS 모듈 - 디렉터리 열기 os.startfile() (0) | 2020.07.03 |
---|---|
파이썬 send2trash 모듈 다루기 - 휴지통으로 파일 삭제 (0) | 2020.07.03 |
파이썬 OS 모듈 - 파일 복사 shutil.copy2 shutil.copytree (0) | 2020.06.30 |
파이썬 __file__, 절대경로, 상대경로 os.path.abspath os.path.relpath (0) | 2020.06.30 |
파이썬 win32gui 모듈 다루기 - 현재 창 이름 구하기 (0) | 2020.06.30 |