os.walk()를 사용하여 Python에서 디렉터리를 재귀적으로 순회하는 방법: 세부 안내서
소개
Python의 os.walk() 함수는 디렉토리 트리를 재귀적으로 탐색하는 강력한 메커니즘을 제공합니다. 지정된 디렉토리 내의 모든 디렉토리와 파일을 반복하므로 파일 관리 및 디렉토리 탐색과 같은 작업에 필수적인 도구입니다.
문제: 디렉토리 목록 출력 사용자 정의
os.walk()의 기능을 시연하려면 다음 시나리오를 고려하십시오. 루트 디렉터리에서 재귀적으로 탐색하고 중첩된 수준을 포함하여 디렉터리 및 파일의 사용자 정의 목록을 인쇄하려고 합니다.
초기 코드 및 O/P
다음 코드 사용:
import os import fnmatch for root, dir, files in os.walk("."): print(root) print("") for items in fnmatch.filter(files, "*"): print("..." + items) print("")
다음 출력을 얻습니다.
. ...Python_Notes ...pypy.py ...pypy.py.save ...classdemo.py ....goutputstream-J9ZUXW ...latest.py ...pack.py ...classdemo.pyc ...Python_Notes~ ...module-demo.py ...filetype.py ./packagedemo ...classdemo.py ...__init__.pyc ...__init__.py ...classdemo.pyc
그러나 이 출력은 충족하지 않습니다. 원하는 형식:
A ---a.txt ---b.txt ---B ------c.out
솔루션
출력을 사용자 정의하려면 향상된 접근 방식이 필요합니다. 다음 코드는 원하는 형식을 얻습니다.
import os # traverse root directory, and list directories as dirs and files as files for root, dirs, files in os.walk("."): path = root.split(os.sep) print((len(path) - 1) * '---', os.path.basename(root)) for file in files: print(len(path) * '---', file)
설명
이 코드는 다음 논리를 사용합니다.
출력
이 향상된 코드를 사용하면 원하는 출력을 얻습니다.
A ---a.txt ---b.txt ---B ------c.out
이 출력에서 A와 B는 디렉터리를 나타내고 a.txt, b.txt 및 c.out은 파일을 나타냅니다. 하이픈 접두사 수는 각 항목의 중첩 수준을 나타냅니다.
위 내용은 중첩된 디렉토리 목록을 생성하기 위해 Python의 os.walk() 함수 출력을 어떻게 사용자 정의할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!