2011-07-30 3 views
3

이 어색한 glob 구문을 사용하는 python 스크립트를 작성하고 있습니다.파이썬의 glob 함수는 다양한 깊이의 와일드 카드를 지원합니까?

import glob  
F = glob.glob('./www.dmoz.org/Science/Environment/index.html') 
F += glob.glob('./www.dmoz.org/Science/Environment/*/index.html') 
F += glob.glob('./www.dmoz.org/Science/Environment/*/*/index.html') 
F += glob.glob('./www.dmoz.org/Science/Environment/*/*/*/index.html') 
F += glob.glob('./www.dmoz.org/Science/Environment/*/*/*/*/index.html') 

가 줄 바꿈 할 수있는 방법이 될한다고 같아이 한 줄입니다 :

F = glob.glob('./www.dmoz.org/Science/Environment/[super_wildcard]/index.html') 

하지만 적절한 슈퍼 와일드 카드는 어떻게 될지 모른다. 그런 것이 있습니까?

답변

3

죄송합니다. 그것은 완벽하지,하지만 나를 위해 작동

for root, dirs, files in os.walk('/starting/path/'): 
    for myFile in files: 
     if myFile == "index.html": 
      print os.path.join(root, myFile) 
1

: 당신은 아마 몇 os.walk를 사용하여 줄의 코드를 작성해야 정확하게 당신이 필요로하는 와일드 카드를 구현 난 그냥 Formic을 발표했다

for i in range(max_depth): 
    components= ['./www.dmoz.org/Science/Environment',]+(['*']*i)+['index.html'] 
    fsearch=os.path.join(*components) 
    fs_res=glob.glob(fsearch) 
    if len(fs_res)==1: 
     return fs_res[0] 
1

- ' ** '- Apache Ant의 구현에서 FileSet and Globs.

는 검색이 구현 될 수

import formic 
fileset = formic.FileSet(include="/www.dmoz.org/Science/Environment/**/index.html") 
for file_name in fileset.qualified_files(): 
    # Do something with file_name 

이 현재 디렉토리에서 검색합니다. 이게 도움이 되길 바란다.

+0

믹싱에 포함될 때와 배제 할 때 실제로 개미 와일드 카드 프로세스에 결함이있는 것으로 나타났습니다. 예를 들어 ant 와일드 카드를 사용하여이 필터를 표현할 수 없습니다. "모든 파일을 dir a/b/c에 포함하고 싶지만 readme.txt를 제외한 모든 * .txt 파일은 제외합니다." PERFORCE 구현은 패턴의 순서를 사용하여 작동시키기 때문에 훨씬 더 좋습니다. –

관련 문제