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()