logo

Glob() 함수를 사용하여 Python에서 재귀적으로 파일을 찾는 방법은 무엇입니까?

Glob은 Unix 쉘과 관련된 규칙에 따라 특정 패턴을 일치시키는 기술을 정의하는 데 사용되는 일반적인 용어입니다. Linux 및 Unix 시스템과 쉘도 glob을 지원하고 기능도 제공합니다.glob()>시스템 라이브러리에서.

Python에서는 glob 모듈을 사용하여 검색합니다. 파일/경로 이름 지정된 패턴과 일치합니다. glob의 패턴 규칙은 표준 Unix 경로 확장 규칙을 따릅니다. 또한 벤치마크에 따르면 디렉터리의 경로 이름을 일치시키는 방법이 다른 방법보다 더 빠른 것으로 예측됩니다. glob에서는 와일드카드도 사용할 수 있습니다.('*, ?, [ranges])>정확한 문자열 검색과 별도로 경로 검색을 더욱 간단하고 편리하게 만듭니다.



메모: 이 모듈은 Python에 내장되어 있으므로 외부에 설치할 필요가 없습니다.

예:








# Python program to demonstrate> # glob using different wildcards> > > import> glob> > > print>(>'Named explicitly:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/data.txt'>):> >print>(name)> > # Using '*' pattern> print>(>' Named with wildcard *:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/*'>):> >print>(name)> > # Using '?' pattern> print>(>' Named with wildcard ?:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/data?.txt'>):> >print>(name)> > # Using [0-9] pattern> print>(>' Named with wildcard ranges:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/*[0-9].*'>):> >print>(name)>

>

>

출력 :

파이썬-글로브

Glob() 함수를 사용하여 재귀적으로 파일 찾기

우리는 기능을 사용할 수 있습니다glob.glob()>또는glob.iglob()>glob 모듈에서 직접 디렉터리/파일 및 하위 디렉터리/하위 파일 내부에서 경로를 반복적으로 검색합니다.

통사론:

 glob.glob(pathname, *, recursive=False)>
 glob.iglob(pathname, *, recursive=False)>

메모: 재귀가 설정된 경우True> **>그 뒤에 경로 구분 기호가 옵니다.('./**/')>모든 파일이나 디렉터리와 일치합니다.

예:




자바 문자열 메소드

# Python program to find files> # recursively using Python> > > import> glob> > > # Returns a list of names in list files.> print>(>'Using glob.glob()'>)> files>=> glob.glob(>'/home/geeks/Desktop/gfg/**/*.txt'>,> >recursive>=> True>)> for> file> in> files:> >print>(>file>)> > > # It returns an iterator which will> # be printed simultaneously.> print>(>' Using glob.iglob()'>)> for> filename>in> glob.iglob(>'/home/geeks/Desktop/gfg/**/*.txt'>,> >recursive>=> True>):> >print>(filename)>

>

>

출력 :

파이썬-글로브
이전 버전의 Python의 경우:
가장 간단한 방법은 다음을 사용하는 것입니다. os.walk() 디렉토리 트리를 재귀적으로 탐색할 수 있도록 특별히 설계되고 최적화되었기 때문입니다. 아니면 우리는 또한 사용할 수 있습니다 os.listdir() 디렉터리와 하위 디렉터리의 모든 파일을 가져온 다음 필터링합니다.

예를 통해 살펴 보겠습니다.
예:




# Python program to find files> # recursively using Python> > > import> os> > # Using os.walk()> for> dirpath, dirs, files>in> os.walk(>'src'>):> >for> filename>in> files:> >fname>=> os.path.join(dirpath,filename)> >if> fname.endswith(>'.c'>):> >print>(fname)> > '''> Or> We can also use fnmatch.filter()> to filter out results.> '''> for> dirpath, dirs, files>in> os.walk(>'src'>):> >for> filename>in> fnmatch.>filter>(files,>'*.c'>):> >print>(os.path.join(dirpath, filename))> > # Using os.listdir()> path>=> 'src'> dir_list>=> os.listdir(path)> for> filename>in> fnmatch.>filter>(dir_list,>'*.c'>):> >print>(os.path.join(dirpath, filename))>

>

>

출력 :

 ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c>