2016-03-30 6 views
4

Ich versuche, von einem Ordner zu lesen, der Textdokumente mit Python 3 enthält. Insbesondere ist dies eine Änderung des LingSpam E-Mail-Spam-Datasets. Ich erwarte, dass der Code, den ich geschrieben habe, alle 1893 Textdokumentnamen zurückgibt, jedoch gibt der Code stattdessen die ersten 420 Dateinamen zurück. Ich verstehe nicht, warum es kurz vor der Gesamtzahl der Dateinamen bleibt. Irgendwelche Ideen?Warum durchläuft meine glob.glob-Schleife nicht alle Textdateien im Ordner?

if not os.path.exists('train'): # download data 
    from urllib.request import urlretrieve 
    import tarfile 
    urlretrieve('http://cs.iit.edu/~culotta/cs429/lingspam.tgz', 'lingspam.tgz') 
    tar = tarfile.open('lingspam.tgz') 
    tar.extractall() 
    tar.close() 
abc = [] 
for f in glob.glob("train/*.txt"): 
    print(f) 
    abc.append(f) 
print(len(abc)) 

Ich habe versucht, die glob params aber immer noch keinen Erfolg zu ändern.

Edit: Anscheinend funktioniert mein Code für alle außer mir. Hier ist meine output

+5

Ihr Code funktioniert gut für mich: https://asciinema.org/a/39x9vuca48gd7fieugpkicbbt – larsks

+0

Haben Sie versucht, den absoluten Pfad zu verwenden? –

+0

bestätige ich auch. Es hat für mich funktioniert. – Hun

Antwort

0

Erfolg! Das Problem war

if not os.path.exists('train'): # download data 

meine Ausgabe zu überprüfen, hatte ich heruntergeladen tatsächlich die Dateien auf meinem Computer, und da diese Zeile geprüft, ob der Ordner existiert, und es gab, es verursacht Probleme. Ich löschte die Dateien von meiner Maschine und jetzt funktioniert es, wie es sollte, obwohl ich

from urllib.request import urlretrieve 
    import tarfile 
    urlretrieve('http://cs.iit.edu/~culotta/cs429/lingspam.tgz', 'lingspam.tgz') 
    tar = tarfile.open('lingspam.tgz') 
    tar.extractall() 
    tar.close() 

ohne die if-Anweisung das gleiche Ergebnis hätte laufen vermuten.

Verwandte Themen