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>