Da Dateiobjekte Lazy Iteration unterstützt (verhält sich effektiv als Generatoren), schlage ich vor, Generatorschnittstelle, nämlich next
Funktion zu verwenden.
Rufen Sie das nächste Element vom Iterator ab, indem Sie seine next() -Methode aufrufen. Wenn der Standardwert angegeben ist, wird er zurückgegeben, wenn der Iterator erschöpft ist, andernfalls wird StopIteration
ausgelöst.
with open('file1', 'r') as src, open('file2', 'w') as dst_odd, open('file3', 'w') as dst_even:
odd_line = next(src)
dst_odd.write(odd_line)
even_line = next(src)
dst_even.write(even_line)
Sie brauchen auch EOF zu behandeln - so zu tun, können Sie StopIteration Ausnahme fangen.
with open('file1', 'r') as src, open('file2', 'w') as dst_odd, open('file3', 'w') as dst_even:
try:
odd_line = next(src)
except StopIteration:
pass # stop processing - end of file
dst_odd.write(odd_line)
try:
even_line = next(src)
except StopIteration:
pass # stop processing - end of file
dst_even.write(even_line)
Zur weiteren Vervielfältigung in Code reduzieren und Fall für beliebige Anzahl von Ausgabedateien verallgemeinern Sie so etwas wie verwenden:
import itertools
with open('file1', 'r') as src, open('file2', 'w') as dst_odd, open('file3', 'w') as dst_even:
destinations = itertools.cycle([dst_odd, dst_even]) # additional file object may be passed here.
try:
next_line = next(src)
except StopIteration:
pass # stop processing - end of file
next_dst = next(destinations)
next_dst.write(next_line)
brachte keine Ergebnis - Bedeutung, keine Ausgabe und keine Dateien erstellt? – TigerhawkT3
Keine Zeilen wurden kopiert @ TigerhawkT3 – Keerthimanu
Wurden die Dateien erstellt? Wenn ja, waren sie leer? Wenn nicht, sind Sie sicher, dass Sie das richtige Verzeichnis überprüfen? Gab es eine Fehlermeldung? – TigerhawkT3