2016-06-05 8 views
-1

Ich habe viele Zip-Dateien in einem Ordner, sagen, der Ordner enthält 1.zip, 2.zip, 3.zip usw. Jeder dieser Zip-Ordner enthält viele Dateien. Aber jeder von ihnen enthält eine Datei namens ans.txt.
Nun ist die ans.txt haben Format wie:
Name = Devesh
Marks = 20
Alter = 23
RollNo = 34343
..
.
.
Ich möchte den Namen der Zip-Datei wissen, die Marken oder Alter oder ein vom Benutzer eingegebenes Attribut enthält.
Ich habe den folgenden Code geschrieben:So lesen Sie Dateien aus jedem ZIP-Ordner in einem Verzeichnis

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 


Jetzt wird das Programm nur in der Lage ist, für nur eine zip-Datei auszuführen sagen 1.zip, es 2.zip oder 3.zip wird nicht.
Bitte helfen.

+1

Es ist wegen Ihrer Einrückung. Ihre 'for' -Schleife ist auf der gleichen Ebene wie Ihre' z = zipfile .... 'und' mit open() ... ' – Will

+0

@Will würde ich sagen, das liegt an der Art und Weise, wie uns die Website formatiert der Code. Wenn der Code genau so wäre, dann würde es wahrscheinlich nicht einmal laufen (es würde einen "Erwarteten Indent" -Fehler auslösen). – user1790813

+0

Der veröffentlichte Code würde derzeit einen Syntaxfehler aufgrund der falschen Einrückung verursachen, die unmittelbar auf die for-Anweisung folgt. Bitte posten Sie den eigentlichen Code, den Sie ausführen möchten. – holdenweb

Antwort

1

Ist es das, was Sie erreichen möchten?

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

Ich habe versucht, Ihren Code auszuführen, aber es funktioniert immer noch nicht. Das gleiche Problem besteht darin, die Code-Läufe für 1.ZIP fortzusetzen, aber es läuft nicht für 2.Zip ..... Und ich habe das Problem ein wenig modifiziert, also lies es bitte. –

+0

Es funktioniert jetzt..Danke. –

Verwandte Themen