일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬3
- pandas
- office
- 안드로이드
- 파워포인트
- git
- Windows10
- 깃
- 아웃룩
- 윈도우11
- windows
- Android
- pythongui
- 문자열
- 윈도우10
- VBA
- python3
- pyqt5
- 엑셀
- matlab
- html
- win32com
- Outlook
- python
- Excel
- 파이썬GUI
- 오피스
- 파이썬
- Windows11
- 비주얼베이직
Appia의 IT세상
파이썬[Python] 특정 경로에 있는 모든 파일과 디렉토리 출력하기(os.walk) 본문
이번에는 특정 폴더의 모든 파일과 디렉토리를 출력하는 방법에 대해서 살펴보고자 합니다. 앞서서 파일인지 디렉토리인지 확인 하는 방법을 가졌살펴봤습니다. 물론, 그 방법을 통해서도 모든 파일을 출력하는 방법이 있고, 여기서 관련해서 다시한번 다루어 볼 것입니다.
먼저, 다음을 진행하기 앞서서, 테스트를 위해서 다음과 같은 폴더와 파일들을 임의적으로 만들었습니다.
물론 이 파일 폴더는 PythonTest 폴더 밑에 각각 폴더들을 구비 했습니다. 그리고 각 폴더는 Path_1에는 File_1.dbc, Path_2에는 File_2 형태로 파일을 하나씩 넣어 놨습니다. 그럼 이부분을 바탕으로 모든 파일을 출력하는 부분에 대해서 만들어 보겠습니다.
다음 포스팅에선 간단히 폴더 안에 존재하는 파일과 디렉토리를 출력하도록 해봤었습니다. 이 부분을 응용하도록 하겠습니다.
그럼 그럼 위의 포스팅에서 사용한 코드를 살짝 수정하여 다음과 같은 코드를 작성해봤습니다.
example)
import os import os.path def print_file(dir): files = os.listdir(dir) for item in files : if os.path.isdir(dir+r"\\"+item) == True : print_file(dir+r"\\"+item) else: print(dir+r"\\"+item) if __name__ == '__main__': dir = r"D:\PythonTest" print_file(dir) | cs |
위의 코드를 보면 디렉토리일 경우 재귀하여 결론적으로는 상위 폴더를 하나 정하고, 하위에 모든 폴더 구조에 있는 파일들을 경로와 함꼐 표시하도록 했습니다. 위의 코드를 실행하니 다음과 같이 출력이 됩니다.
result)
D:\PythonTest\\File_0.dbc D:\PythonTest\\Path_1\\File_1.dbc D:\PythonTest\\Path_1\\Path_1_1\\File_1_1.dbc D:\PythonTest\\Path_2\\File_2.dbc D:\PythonTest\\Path_2\\Path_2_1\\File_2_1.dbc D:\PythonTest\\Path_3\\File_3.dbc D:\PythonTest\\Path_3\\Path_3_1\\File_3_1.dbc | cs |
위와 같은 방법으로 하는 것도 매우 괜찮은데, 관련해서 특정 os모듈에 관련된 함수가 있습니다. 그럼 한번 살펴보겠습니다.
currentfolder, dirs, files =os.walk(path)
currentfolder - 현재 확인하는 폴더의 이름을 출력해줍니다.
dirs - 현재 디렉토리에서 하위 디렉토리 이름에 대해서 리스트 형태로 리턴해줍니다.
files - 현재 디렉토리에서 파일 이름를 리턴해줍니다.
그럼 한번 실행해보도록 하겠습니다.
example)
import os for currentdir, dirs, files in os.walk(r"D:\PythonTest"): for file in files : print(currentdir) print(dirs) print(file) | cs |
위의 예제를 실행해보니, 다음과 같은 결과가 나옵니다.
D:\PythonTest ['Path_1', 'Path_2', 'Path_3'] File_0.dbc D:\PythonTest\Path_1 ['Path_1_1'] File_1.dbc D:\PythonTest\Path_1\Path_1_1 [] File_1_1.dbc D:\PythonTest\Path_2 ['Path_2_1'] File_2.dbc D:\PythonTest\Path_2\Path_2_1 [] File_2_1.dbc D:\PythonTest\Path_3 ['Path_3_1'] File_3.dbc D:\PythonTest\Path_3\Path_3_1 [] File_3_1.dbc | cs |
원래는 약간 수정해서 위와 동일한 결과를 만들어볼려고 했는데, os.walk의 반환되는 값들에 대해서 알고 있으면 좋을 것 같아서 다음과 같이 풀어서 작성을 했습니다. 그럼 위와 유사한 형태가 나오도록 조금 코드를 수정해보겠습니다.
import os for currentdir, dirs, files in os.walk(r"D:\PythonTest"): for file in files : print(currentdir+r"\\"+file) | cs |
위의 코드를 수정해서 실행하면 다음과 같은 결과가 나옵니다.
D:\PythonTest\\File_0.dbc D:\PythonTest\Path_1\\File_1.dbc D:\PythonTest\Path_1\Path_1_1\\File_1_1.dbc D:\PythonTest\Path_2\\File_2.dbc D:\PythonTest\Path_2\Path_2_1\\File_2_1.dbc D:\PythonTest\Path_3\\File_3.dbc D:\PythonTest\Path_3\Path_3_1\\File_3_1.dbc | cs |
코드의 양도 훨씬 줄어들고 편해지는 것을 알 수 있습니다. 이런 부분을 바탕으로해서 파일 찾기등을 구현해보는 것은 어떨까 합니다. 혹 궁금하신 점이나 문의 사항 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬[Python] CPU, 램(RAM), OS(운영체제)등의 System(시스템) 정보 확인 (0) | 2020.06.03 |
---|---|
파이썬[Python] 외부IP,내부IP, 맥(MAC)주소 확인하는 방법 (1) | 2020.06.01 |
파이썬[Python] 팩토리얼(Factorial)연산 하기 및 관련 제약 사항 (0) | 2020.05.21 |
파이썬[Python] 단어 첫 글자 대문자로 바꾸기/ 대소문자 바꾸기(upper,lower,capitalize) (0) | 2020.05.20 |
파이썬[Python] 리스트에서 중첩된 맴버 제거 하기 (0) | 2020.05.15 |