2017-07-10 2 views
0

Ich brauche über 2000 Dummy (txt) -Dateien für den Test einer Papierkorb-Funktion. Ich habe die txt Dummy-Dateien mit dem folgenden Code erstellt:Hinzufügen von Inhalten zu mehreren (txt) Dateien python

list = range(0,2000) 
vulling = list 

with open("path/file.txt", "w") as f: 
for s in vulling: 
    f.write(str(s) +"\n") 

List = open("path/file.txt") 
List2 = (s.strip() + ' dummy' for s in List) 
for item in List2: 
    open('path/%s.txt'%(item,), 'w') 

Aber, da ich nicht leere Dateien hochladen können, ich brauche Inhalt dieser Dateien hinzuzufügen. Der Inhalt kann für alle diese Dateien identisch sein. Beispiel: Fügen Sie jeder Datei eine Zeichenfolge "Spam" hinzu. Was wäre die beste Lösung dafür?

+0

Möchten Sie den Inhalt zu den Dateien hinzufügen, während Sie sie erstellen oder nachdem sie erstellt wurden? Und wann schließen Sie diese Funktionen in Ihrem Code? –

+0

Das ist egal ... Das Ziel ist es, +2000 Dateien mit etwas Inhalt zu erstellen. Bis jetzt habe ich den Code, der 2000 Dateien erstellt, aber ohne Inhalt. – Xanthouse

Antwort

0

Die einfachste Sache zu tun ist, nur die Dateien mit dem Inhalt in ihnen zu schaffen, mit dem Sie beginnen wollen:

import os.path 


def create_test_files(target_dir, content, n=2000, template="file_%s.txt"): 
    for i in xrange(n): 
     path = os.path.join(target_dir, template % i) 
     with open(path, 'w') as fh: 
      fh.write(content) 

     yield path 


for file_name in create_test_files("/tmp/example", 'Spam'): 
    print file_name 

Dies ist für Sie Dateinamen wählen, so dass, wenn Sie bestimmte diejenigen benötigen, können Sie Ich muss es ändern.

Das ist wirklich ziemlich schnell. Der andere Ansatz (create then copy) führt dazu, dass die Originaldatei 2000 mal gelesen werden muss. Da wir den Inhalt, den wir dort haben, bereits kennen, können wir diese Zeit sparen.

Hinweis: Diese Lösung verwendet einen Generator. Wenn Sie also keine iterieren (z. B. durch Einfügen in eine Schleife oder ein Tupel), werden keine Dateien generiert.

+0

Danke für die Antwort! Obwohl ich ziemlich neu in der Python-Welt bin, verstehe ich, dass das Hinzufügen von Inhalt vor dem Erstellen der Dateien weniger Zeit in Anspruch nimmt, als den bestehenden Dateien Inhalt zu geben. Aber ich bin mit den Generatoren (noch) nicht vertraut. Also muss ich diesen Code-Frieden in der Schleife haben? Wenn ich den Code erstelle, bleibe ich mit einem "ungültigen Syntax" Fehler auf dem Tupel Teil .... – Xanthouse

+0

Ich habe das Beispiel geändert, um die Resultate zu wiederholen und sie auszudrucken. Wenn Sie die Dateinamen nicht benötigen, können Sie den Ertrag auskommentieren und die Funktion normal aufrufen. Wenn Sie die Werte in einer Liste aufbauen und in einer Funktion zurückgeben können, um das gleiche Ergebnis zu erhalten. Das obige funktioniert für mich in Python 2.7 –

+0

Es hat funktioniert! Vielen Dank – Xanthouse

Verwandte Themen