2013-06-05 15 views
6

Próbuję teraz odczytać 2 pliki w tym samym momencie, ale otrzymuję "zbyt wiele wartości do rozpakowania błędu". Oto, co mam:Czy istnieje sposób odczytu dwóch plików w tym samym czasie w python? (z tą samą pętlą?)

for each_f, each_g in f, g : 
    line_f = each_f.split() 
    line_g = each_g.split() 

Jestem trochę nowy dla Pythona, ale założyłem, że będę w stanie to zrobić. Jeśli jest to niemożliwe, czy istnieje odpowiednia metoda? (Te dwa pliki Czytam są bardzo duże)

Odpowiedz

8
import itertools 

# ... 

for each_f, each_g in itertools.izip(f, g): 
    # ... 
+0

'import itertools' może być potrzebny. – shahkalpesh

+0

@shahkalpesh oczywiście. – kirelagin

+1

może to nie być oczywiste dla OP, stąd komentarz. – shahkalpesh

-1

Można użyć menedżera kontekstowe, czyli ze stwierdzeniem czytać dwa pliki w tym samym czasie:

with open('file1', 'r') as a, open('file2', 'r') as b: 
    do_something_with_a_and_b 
+0

Myślę, że nie należy tego obniżać w ten sposób; jest to prosta odpowiedź na tytuł pytania, która następnie nie pokrywa się z rzeczywistym problemem. Jest to tytuł, który powinien być ustawiony na coś w stylu 'zbyt wiele wartości, aby rozpakować w pętli for' – progmatico

1

Bez użycia itertools:

while True: 
    try: 
     f_line = next(f) 
     g_line = next(f) 
    except StopIteration: 
     break 

To powoduje przerwanie pętli, gdy tylko krótszy z dwóch plików zostanie wyczerpany, tak jak robi to również izip.

Ale tak naprawdę, najlepszym rozwiązaniem jest itertools.

Powiązane problemy