2017-05-24 1 views
0

Oracle이라고하는 하위 디렉토리에있는 모든 파일 이름을 재귀 적으로 나열하려고합니다 (다른 하위 디렉토리의 파일은 제외).패턴과 일치하는 디렉토리의 파일을 반복적으로 나열합니다.

for root, dirs, files in os.walk(r"Y:\Data\MXD_DC\DataSourceChange", topdown=True): 
    for name in dirs: 
     if fnmatch.fnmatch(name, 'Oracle'): 
      for filename in files: 
       fullpath = os.path.join(root, filename) 
       print "FullPath is: " + fullpath 

나는 단지 그것을 모든 하위 디렉토리의 모든 파일 이름을 나열 얻을 수 있습니다 :

나는 다음과 같은 코드가 있습니다. 그것은 오라클이라는 하위 디렉토리에도 가지 않습니다. 특정 디렉토리에있는 파일을 나열하려면

답변

0

를 사용하는 스크립트에서 디렉토리를 인쇄하는 데 사용할 수있는 에 의해 반환 된 튜플에 동일한 l의 디렉토리와 파일이 포함되어 있기 때문에 파일을에 포함 된 Oracle 폴더에 나열하는 대신 계층 구조의 같은 수준에있는 파일을 나열합니다 evel. 당신이 오라클 폴더

for root, dirs, files in os.walk(r"Y:\Data\MXD_DC\DataSourceChange", topdown=True): 
for name in dirs: 
    if name == 'Oracle': 
     path = os.path.join(root, name) 
     for filename in os.listdir(path): 
      fullpath = os.path.join(path, filename) 
      print "FullPath is: " + fullpath 
  • 이 dirnames을 무시

    를 발견하면,

    • walk에서 dirnames을 사용하고 listdir를 사용하는 마지막 구성 요소를 사용

      당신은 예상되는 파일을 나열하는 2 가지 방법이 있습니다 루트에서 오라클 인 경우 테스트 :

      for root, dirs, files in os.walk(r"Y:\Data\MXD_DC\DataSourceChange", topdown=True): 
          if os.path.basename(root) == 'Oracle': 
           for filename in files: 
            fullpath = os.path.join(root, filename) 
            print "FullPath is: " + fullpath 
      
  • +0

    사소한 수정으로 큰 효과를 얻었습니다. fullpath = os.path.join (경로, 파일 이름) –

    +0

    @NeerajSingh : Oups! 수정 됨 ... –

    0

    당신은 당신이 오라클라는 이름의 디렉토리를 찾을 때

    import os 
    os.listdir("Oracle") 
    

    는, 현재이

    import os 
    print "%s" %os.listdir("Oracle") 
    
    +0

    그럼 특정 디렉토리의 파일을 사용해야합니다. 그리고 오라클이라는 디렉토리가 루트 레벨에 있지 않을 수도 있습니다. 하위 디렉토리 중 하나에있을 수 있습니다. –

    관련 문제