2016-05-26 25 views
1

Gibt es eine Möglichkeit, ein Array zu erweitern, das Daten aus einer Datei bei jeder Iteration for -loop und with speichert Befehlskombination mit glob. Derzeit habe ich so etwas wiePython: Können Sie ein Array bei jeder Iteration mit glob (oder ähnlich) erweitern, um Dateien aus einem Verzeichnis einzulesen

import glob 
from myfnc import func 


for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 

     fileHead, data = func(thefile) 

wo funcmyfnc in einem anderen Skript definiert ist. Was dies tut, ist bei jeder Iteration im Verzeichnis, speichert die Daten von jeder Datei in fileHead und data (als Arrays) und löscht was auch immer in der vorherigen Iteration war. Was ich brauche, ist etwas, das jedes Array bei jedem Durchgang erweitert. Gibt es einen schönen Weg, dies zu tun? Es muss keine For-Schleife sein, mit Combo. So lese ich alle Dateien aus dem Verzeichnis ein.

Ich dachte, die Arrays vorher zu initialisieren und dann versuchen, sie zu erweitern, nachdem die with in einem Durchgang erfolgt ist, aber es gab mir eine Art von Fehler mit dem extend Befehl. Mit dem Fehler, würde der Code aussehen

import glob 
from myfnc import func 

fileHead, data = [0]*2 


for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 

     fileHeadExtend, dataExtend = func(thefile) 

    fileHead.extend(fileHeadExtend) 
    data.extend(dataExtend) 

Also, das Problem, dass es hat fileHead und data beide initialisiert, sondern als int ist. Allerdings möchte ich die Arrays nicht auf so viele Nullen initialisieren. Es sollte zunächst keine willkürlichen Werte geben. Also, das ist es, wo das Problem liegt.

+1

die auf Ihre Frage Python hinzufügen Fehlermeldung. –

+0

'AttributeError: 'int' Objekt hat kein Attribut 'extend'' – Lou

+0

Jetzt müssen Sie herausfinden, welche Variable ein' int' ist. –

Antwort

0

Sie wollen:

import glob 
from myfnc import func 

fileHead = list() 
data = list() 

for filename in glob.glob('*.dta'): 
    with open(filename,'rb') as thefile: 
     fileHeadExtend, dataExtend = func(thefile) 
    fileHead.extend(fileHeadExtend) 
    data.extend(dataExtend) 
+0

Das hat den Trick! Vielen Dank! – Lou