2012-10-16 25 views
5

Jak mogę otworzyć wiele plików w tym samym czasie w języku programowania Pythona, aby uruchomić mój program?otwieranie wielu plików w Pythonie

mam około 15 plików, tylko teraz mam pracował z jednym z nich jak poniżej:

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

Jaki problem należy stoi z otwarciem wielokrotność pliki, jeśli możesz otworzyć jedną z nich? –

Odpowiedz

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

jesteś w zasadzie tworzenia obiektów plik, aby uzyskać dostęp do plików.

+0

Jeśli nie trzeba ich otwierać równolegle, polecam używanie 'with (open (" Exemplo_1.txt "," rU ")) jako f1:' zamiast - słowo kluczowe with zmywa poprawnie w przypadku wyjątek. – thegrinner

+5

Każda szansa, że ​​moglibyśmy przekonać cię do usunięcia średników ;-) – mgilson

+3

Używanie piętnastu osobnych nazw dla piętnastu otwartych plików wydaje się niepraktyczne .. chyba że każdy z nich jest traktowany inaczej, będą musieli być w czymś unikać wielu powielania kodu. Myślę, że lepiej jest umieścić je na liście lub dykcie. – DSM

3

zrobiłbym coś takiego:

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

Zobacz try/finally.

+0

To działało dla mnie jak czar. Po prostu chcę zrozumieć składnię. % d i% i part ... –

+0

Znalazłem to bardzo przydatne. Musiałem otworzyć 1000 plików i zapisać losową próbkę dużego zestawu danych. Duży zbiór danych jest o wiele za duży, aby zmieścić się w pamięci. – denson

1

jeśli trzeba pętli na wielu plikach na jeden strzał, użyć modułu fileinput

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

można użyć kombinacji glob i fileinput

import fileinput 
from glob import glob 

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