2012-10-16 14 views
5

Wie kann ich viele Dateien gleichzeitig in der Python-Programmiersprache öffnen, um mein Programm auszuführen?Öffnen mehrerer Dateien in Python

Ich habe etwa 15 Dateien, gerade jetzt habe ich mit einem von ihnen gearbeitet haben wie unten:

f=open("Exemplo_1.txt","rU") 
+1

Welches Problem konfrontiert sind Sie mit mehreren Öffnungs Dateien, wenn Sie einen von ihnen öffnen können? –

Antwort

3
f1=open("Exemplo_1.txt","rU"); 
f2=open("Exemplo_2.txt","rU"); 
... 
f15=open("Exemplo_15.txt","rU"); 

Sie sind im Grunde Datei-Objekte erstellen Zugriff auf die Dateien zu erhalten.

+0

Wenn sie nicht parallel geöffnet werden müssen, würde ich empfehlen, 'mit (offen (" Beispiel_1.txt "," rU ")) als f1:' stattdessen - das Schlüsselwort mit zu verwenden, räumt im Falle von eine Ausnahme. – thegrinner

+5

Jede Chance, dass wir Sie dazu überreden könnten, das Semikolon zu entfernen ;-) – mgilson

+3

Fünfzehn getrennte Namen für fünfzehn geöffnete Dateien zu verwenden erscheint unpraktisch ... es sei denn, jeder wird anders behandelt, sie müssen irgendwie in etwas iterierbares eingefügt werden Vermeiden Sie viel Codeverdoppelung. Ich denke, es ist wahrscheinlich eine bessere Idee, sie in eine Liste oder ein Diktat zu setzen. – DSM

3

ich so etwas tun würde:

try: 
    f = [open("Exemplo_%d.txt" % i, "rU") for i in range(1, 16)] 
    # do stuff 
finally: 
    for fh in f: 
     fh.close() 

Siehe try/finally.

+0

Das hat für mich wie ein Charme funktioniert. Ich möchte nur die Syntax verstehen. % d und% i part ... –

+0

Ich fand das sehr nützlich. Ich musste 1000 Dateien öffnen und eine Stichprobe eines großen Datasets an jedes schreiben. Der große Datensatz ist viel zu groß, um in den Speicher zu passen. – denson

1

wenn Sie eine Schleife über mehrere Dateien auf einen Schlag benötigen, verwenden Sie das fileinput Modul

for x in fileinput.input(['patterns.in', 'logfile.txt']): 
    print x 
5

Sie eine Kombination aus glob verwenden könnte und fileinput

import fileinput 
from glob import glob 

fnames = glob('Exemplo_*.txt') 
for line in fileinput.input(fnames): 
    pass # do whatever 
Verwandte Themen