Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 Unix 스타일 경로 이름 패턴 확장(glob)

<시간/>

여러 번 프로그램은 패턴과 일치하는 이름을 가진 파일 시스템의 파일 목록을 반복해야 합니다. glob 모듈은 특정 디렉토리에 특정 확장자를 갖거나 특정 문자열을 파일 이름의 일부로 사용하여 파일을 만드는 데 유용합니다.

glob 모듈 함수에서 사용하는 패턴 일치 메커니즘은 UNIX 경로 확장 규칙을 따릅니다. 이 모듈은 물결표(~) 및 셸 변수를 확장하지 않습니다.

glob 모듈에는 주로 세 가지 기능이 있습니다.

글로브()

이 함수는 pathname 매개변수에 지정된 패턴과 일치하는 파일 목록을 반환합니다. 경로 이름은 절대적이거나 상대적일 수 있습니다. * 및 ?와 같은 와일드카드를 포함할 수 있습니다.

이 함수의 재귀 매개변수는 기본적으로 False입니다. True이면 현재 디렉토리의 하위 디렉토리를 재귀적으로 검색하여 주어진 패턴과 일치하는 파일을 찾습니다.

다음 코드는 확장자가 '.py'인 현재 디렉토리의 모든 파일을 인쇄합니다.

>>> import glob
>>> for file in glob.glob("*.py"):
print (file)
의 파일

다음 코드에서 recursive=True 매개변수는 하위 디렉토리의 확장자가 '.py'인 파일도 인쇄하도록 합니다.

>>> for file in glob.glob("*.py", recursive=True):
print (file)

패턴 경로 이름에는 와일드카드 문자 ?가 포함될 수 있습니다. 다음 명령문은 이름이 세 글자이고 처음 두 글자가 'pp'인 파일 목록을 인쇄합니다.

>>> for file in glob.glob("pp?.py"):
print (file)
의 파일용

다음 코드는 이름이 숫자로 끝나는 파일을 인쇄합니다.

>>> for file in glob.glob('*[0-9].py')
print (file)
의 파일용

다음 구문을 사용하면 지정된 경로와 일치하는 파일이 재귀적으로 인쇄됩니다.

>>> glob.glob('**/*.py', recursive=True)

현재 디렉토리에서 재귀적으로 디렉토리 이름을 인쇄하려면,

>>> glob.glob('tcl/**/', recursive=True)

iglob()

이 함수는 파일 목록 대신 생성기 개체를 반환합니다. next() 함수를 이용하면 다음과 같이 파일명을 출력할 수 있습니다.

>>> it=glob.iglob('*.py')
>>> type(it)
<class 'generator'>
>>> while True:
try:
file=next(it)
print (file)
except StopIteration:
break

이스케이프()

이 함수는 주어진 문자를 이스케이프합니다. 이는 특정 문자가 있는 파일이 이름의 일부가 되어야 할 때 유용합니다. 다음 예제는 chars 문자열에 문자가 있는 파일을 검색합니다.

>>> chars='[]()#'
>>> for char in chars:
esc='*'+glob.escape(char)+'.py'
for file in (glob.glob(esc)):
print (file)
xyz[.py
pp[].py
pp(.py
pp#.py
)