2016-05-08 8 views
-1

Ich habe Corpus in Textdateien, die in mehrere Textdateien in mehreren Ordnern aufgeteilt sind. Was ich tue ist, die Entropie von ihnen zu berechnen, aber habe es schwer, sie in einer Textdatei zu verketten. Was ich getan habe, ist wie unten.Wie kann ich mehrere Textdateien in mehreren Ordnern lesen?

filenames = ['BrownA1.txt', 'BrownB1.txt', 'BrownC1.txt'.....] 
with open("C:/Python27/TRAINING.txt", 'w') as outfile: 
    for fname in filenames: 
     with open(fname) as infile: 
      for line in infile: 
       outfile.write(line) 

Aber diese Methode nimmt so viel Zeit. Ich habe fast Hunderte von TXT-Dateien zu lesen. wie folgt. C:/Python27/acq/000916 ~ 012897, C:/Python27/alum/0009945 ~ 012875, C:/Python27/Gerste/0010141 ~ 0011953 ~ wie Sie sehen können, gibt es fast 30 Ordner wie dieses Format und darunter sind mindestens 30 TXT-Dateien. Gibt es eine effiziente Möglichkeit, sie zu lesen?

Antwort

0

Verwenden Sie os.walk (https://docs.python.org/2/library/os.html#os.walk), um in einen Ordnerbaum zurückzukehren. Natürlich ist es hilfreich, wenn Sie alle Ihre Textdateien (oder die Ordner mit den Textdateien) in einen ansonsten leeren Stammordner stellen. Anscheinend verwenden Sie C: \ Python27, das nicht die optimale Wahl zu sein scheint.

Also, wenn Ihre Textdateien werden in (Unterordner) C gesammelt: \ Pfad \ root \ Ordner \ Sie so etwas wie tun:

import os 
with open('c:/path/to/output/file.txt', 'w') as outfile: 
    for root, dirs, files in os.walk("c:/path/to/root/folder"): 
     for f in files: 
      if os.path.splitext(f)[-1] == ".txt": 
       with open(os.path.join(root, f), "r") as infile: 
        for line in infile: 
         outfile.write(line) 
Verwandte Themen