def filecopy(fName1, fName2): srcF = open(fName1) dstF = open(fName2, "w") while 1: ln = srcF.readline() if not ln: break dstF.write(ln) dstF.close() srcF.close()
Die denkbare Alternative
def filecopy(fName1, fName2): stuff = open(fName1).read() dstF = open(fName2, "w") dstF.write(stuff) dstF.close()
hat den Nachteil, exzessiven Hauptspeicherverbrauchs, dafür geht das auch mit Binärdateien (genau genommen geht die erste Version unter nicht ganz irren Betriebssystemen auch mit Binärdateien, aber dann kann der Speicherverbrauch auch exzessiv sein). Recht universell ist schließlich
def filecopy(fName1, fName2): bufSz = 1024 srcF = open(fName1, "rb") dstF = open(fName2, "wb") while 1: buffer = srcF.read(bufSz) if not buffer: break dstF.write(buffer) dstF.close() srcF.close()
– dabei ist das b ein unter vernünfigen Systemen ignorierter Hinweis für Windows, die Finger von unseren Daten zu lassen. Bei Textdateien ist der nicht wichtig (und kann sogar schaden), bei Binärdateien ist er (unter Windows) lebenswichtig.