programing

pathlib를 사용하여 모든 하위 디렉터리를 재귀적으로 반복합니다.

i4 2023. 5. 21. 10:58
반응형

pathlib를 사용하여 모든 하위 디렉터리를 재귀적으로 반복합니다.

pathlib을 사용하여 지정된 디렉토리의 모든 하위 디렉토리에 대해 재귀적으로 반복하려면 어떻게 해야 합니까?

p = Path('docs')
for child in p.iterdir(): child

지정된 디렉토리의 직계 하위 항목에만 반복되는 것 같습니다.

이것이 가능하다는 것은 알고 있습니다.os.walk()또는glob하지만 저는 경로 객체로 작업하는 것을 좋아하기 때문에 pathlib을 사용하고 싶습니다.

사용(선행을 대체함)**Path().glob("**/*")):

path = Path("docs")
for p in path.rglob("*"):
     print(p.name)

의 방법을 사용할 수 있습니다.Path객체:

p = Path('docs')
for i in p.glob('**/*'):
     print(i.name)

폴더만 찾으려면 다음과 같이 하십시오.

'**/'

경로에 있는 모든 폴더의 모든 경로를 찾으려면 다음을 수행합니다.

p = Path('docs')
for child in p.glob('**/'):
    print(child)

경로가 없는 폴더 이름만 원하는 경우 다음과 같이 폴더 이름을 인쇄합니다.

p = Path('docs')
for child in p.glob('**/'):
    print(child.name)

pathlib가지다glob우리가 패턴을 인수로 제공할 수 있는 방법.

예:Path('abc').glob('**/*.txt')현재 폴더를 찾습니다.abc모든 하위 디렉터리를 찾기 위해 재귀적으로 모든 하위 디렉터리를 찾습니다.txt파일

목록 이해도 사용:

(1) [f.name for f in p.glob("**/*")]  # or
(2) [f.name for f in p.rglob("*")]

추가할 수 있습니다.if f.is_file()또는if f.is_dir()(1) 또는 (2)로 각각 파일만 또는 디렉토리만 대상으로 지정합니다.또는 대체"*"와 같은 무늬가 있는"*.txt"목표로 삼으려면.txt파일 전용입니다.

빠른 안내서를 참조하십시오.

Python 3.12(이 게시물 작성 시점에서 공개되지 않음)에서 사용할 수 있습니다.pathlib.Path.walk()

언급URL : https://stackoverflow.com/questions/50714469/recursively-iterate-through-all-subdirectories-using-pathlib

반응형