2011-11-16 5 views
0

특정 지점에서 열릴 :파이썬 : 파일 정지는 내가 파이썬에서 다음 프로그램을 작성했습니다

  1. :

    import re 
    import os 
    import string 
    
    folder = 'C:\Users\Jodie\Documents\Uni\Final Year Project\All Data' 
    
    folderlisting = os.listdir(folder) 
    for eachfolder in folderlisting: 
        print eachfolder 
        if os.path.isdir(folder + '\\' + eachfolder): 
         filelisting = os.listdir('C:\Users\Jodie\Documents\Uni\Final Year Project\All Data\\' + eachfolder) 
         print filelisting 
    
         for eachfile in filelisting: 
          if re.search('.genbank.txt$', eachfile): 
           genbankfile = open(eachfile, 'r') 
           print genbankfile 
    
          if re.search('.alleles.txt$', eachfile): 
           allelesfile = open(eachfile, 'r') 
           print allelesfile 
    

    그것은 많은 폴더를 통해보고,는 다음과 인쇄 경로가없는 각 폴더의 이름

  2. 각 폴더의 모든 파일 목록
  3. 각 폴더의 두 특정 파일 (".genbank.txt"및 ".alleles.txt"가 포함 된 모든 파일).

    Traceback (most recent call last): 
        File "C:\Users\Jodie\Documents\Uni\Final Year Project\Altering Frequency Practice\Change_freq_data.py", line 16, in <module> 
        genbankfile = open(eachfile, 'r') 
    IOError: [Errno 2] No such file or directory: 'ABP1.genbank.txt' 
    

    문제는 다음과 같습니다 : 가장 확실히 존재하는 정보 파일

    1. 프로그램 때문에, 특정 디렉토리에 도달 한 후 다음과 같은 오류와 함께 실패 할 때까지

    코드는 작동 파일을 열기 전에 파일을 나열합니다.

  4. 원래 디렉토리 그룹에서 해당 디렉토리를 제거하더라도 프로그램은 반복되는 다음 폴더에 대해 동일한 오류를 발생시킵니다. 그리고 그 다음은 제거됩니다. 등등.

이렇게하면 폴더 나 파일이 아닌 파이썬의 일부 제한 사항이라고 생각합니까? 나는 모른다. 그것은 나를 곤란하게했다.

도움을 주시면 감사하겠습니다.

+3

백 슬래시는 이스케이프 문자입니다. 'r'C : \ foo \ bar''와 같은 원시 문자열을 사용하거나''C : \\ foo \\ bar ''와 같은 백 슬래시를 이스케이프하십시오. 둘째, 디렉토리 구분자를 하드 코딩하는 대신 경로에 가입하려면 ['os.path.join'] (http://docs.python.org/library/os.path.html#os.path.join)을 사용하십시오. –

+0

하위 디렉토리도 확인해야하는 경우 [os.walk] (http://docs.python.org/library/os.html#os.walk)를 사용하는 것이 좋습니다. – Velociraptors

답변

0

당신은 http://docs.python.org/library/os.html#os.walk

또한, 당신은 파일의 내용을 읽을 필요) (os.walk 사용해야합니다, 당신은 파일 객체를 인쇄하지 않습니다. 끝나면 파일을 닫거나 컨텍스트 관리자를 사용하여 닫아야합니다. '정확히'무엇을하고있는이 전체 트리를 안내합니다, 당신은 당신이처럼 하나의 수준을 산책 할 수도가 아닌 명심

for root, dirs, files in os.walk(folder): 
    for file_name in files: 
     if re.search('.genbank.txt$', file_name) or \ 
      re.search('.alleles.txt$', file_name): 
      with open(os.path.join(root, f), 'r') as f: 
       print f.read() 

:

은 같을 것 벌써하고있어.

관련 문제