Language/Python
파이썬 OS 모듈 - 하위 디렉터리 검색 os.walk()
jvvp512
2020. 7. 2. 13:13
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
응용
파이썬 파이큐티(PyQT5) 앱 만들기 : 분리수거 - 1
소개 및 기능 분리수거 앱은 폴더를 열어 확장자별로 파일을 분류해주며 이동, 복사, 삭제 기능을 수행할 수 있습니다. 중복된 파일은 따로 폴더를 생성해서 넘버링합니다. 파일 찾기에는 적합��
jvvp.tistory.com