Seite 1 von 1
concatenate Datein
Verfasst: Montag 13. Februar 2012, 12:34
von mit
Hallo,
Ist es moeglich in Python diese Befehle Plattform unabhaengig zu implementieren:
Code: Alles auswählen
head file2 --bytes=1024 >> file1 && tail --bytes=+1024 file2 >file2
Vielen Dank im Vorraus
Re: concatenate Datein
Verfasst: Montag 13. Februar 2012, 12:50
von darktrym
D.h. doch nehme die ersten 1024 Bytes von file2 und füge diese an file1 an.
Nehme dann die letzten 1024 Bytes von file2 und speichere diese als file2.
Gehört das nicht zu den Basics in der Python Programmierung, wie man sowas umsetzt?
Re: concatenate Datein
Verfasst: Montag 13. Februar 2012, 12:53
von Barabbas
darktrym hat geschrieben:
Nehme dann die letzten 1024 Bytes von file2 und speichere diese als file2.
"tail --bytes=+1024" bedeutet, dass ab Byte 1024 gelesen wird - nicht nur die letzten 1024 Byte.
darktrym hat geschrieben:Gehört das nicht zu den Basics in der Python Programmierung, wie man sowas umsetzt?
Jo, mit
file-Objekt, read() und seek() sollte das zu schaffen sein.
Re: concatenate Datein
Verfasst: Montag 13. Februar 2012, 13:00
von BlackJack
@mit: Du möchtest also wirklich den Inhalt von `test2` *löschen*!? Bei der Shell-Zeile kommt nämlich ein `test2` heraus, das 0 Bytes gross ist. Die Umleitungen werden immer ausgewertet *bevor* die Befehle abgearbeitet werden, für die die Umleitung gilt, und ``>dateiname`` leert eine eventuell bestehende Datei. Das ``tail`` hat dann also wenn es gestartet wird, schon gar nichts mehr was es lesen könnte.
Edit:
Code: Alles auswählen
def main():
filename_a = 'tmp/test.bin'
filename_b = 'tmp/test2.bin'
block_size = 1024
with open(filename_a, 'rb+') as in_file:
with open(filename_b, 'ab') as out_file:
out_file.write(in_file.read(block_size))
in_file.truncate(0)
if __name__ == '__main__':
main()