2016-06-05 5 views
-1

폴더에 zip 파일이 많이 있습니다. 폴더에 1.zip, 2.zip, 3.zip 등이 포함되어 있다고 말하십시오.
각 zip 폴더에는 다음과 같은 내용이 들어 있습니다. 많은 파일. 그러나 각 파일에는 ans.txt라는 파일이 있습니다.
이제 ans.txt 같은 형식이 :
이름 = Devesh
마크 = 20
나이 = 23
RollNo = 34343
..
.
.
마크 또는 연령 또는 사용자가 입력 한 속성이 포함 된 zip 파일의 이름을 알고 싶습니다.
나는 다음과 같은 코드를 작성해야 : 디렉토리에있는 모든 zip 폴더에서 파일을 읽는 방법

import os 
    import glob 
    import zipfile 
    flag=0 
    for zip_name in glob.glob('[0-9].zip'): 
     z=zipfile.ZipFile(zip_name,"r") 
     with z.open('BAND_META.txt') as f: 
      for line in f: 
       for word in line.split('='): 
        word=word.strip() 
        if flag==0 
         if word=="Marks" 
          flag=1# flag is intialised as 0 
        elif flag==1 
         if word==marks:#marks is entered by user. 
          print zipfile_name 
          flag=0 


지금 프로그램이 하나의 압축 파일을 실행하는 데에만 수는 1.zip, 2.zip 또는 3.zip하지 않을 말한다.
도와주세요.

+1

들여 쓰기 때문입니다. 당신의'for '루프는'z = zipfile ....'과'open() ...'과 같은 레벨에 있습니다. – Will

+0

웹 사이트가 포맷을 요구하는 방식 때문일 것입니다 코드. 코드가 다음과 같다면 (심지어 "예상 들여 쓰기"오류가 발생합니다) 실행되지 않을 것입니다. – user1790813

+0

게시 된 코드는 현재'for' 문 바로 다음에 잘못된 들여 쓰기로 인해 구문 오류가 발생합니다. 실행할 실제 코드를 게시하십시오. – holdenweb

답변

1

달성하려는 목표입니까?

import os 
import zipfile 

zipfiles = [z for z in os.listdir('.') if z.endswith('.zip')] 


for zfile in zipfiles: 
    with zipfile.ZipFile(zfile) as z: 
     with z.open('ans.txt') as f: 
      if b'marks=' in f.read().lower(): 
       print(z.filename) 
+0

코드를 실행하려고했지만 여전히 작동하지 않습니다. 동일한 문제가 1.zip 용 코드 실행을 지속하지만 2.zip 용으로 실행되지 않습니다. ..... 그리고 문제를 약간 수정하여 읽으십시오. –

+0

지금 작동 중입니다. 감사합니다. –

관련 문제