von großer Datei die letzten paar Bytes abschneiden
Hi, kennt jemand eine Möglichkeit die letzten paar Bytes von einer großen Datei (~1,5 GB) abzuschneiden, ohne die ganze Datei kopieren zu müssen? (In der Shell oder mit C/C++) MfG Markus
On Mon, 05 Mai 2003 at 20:05 (+0200), Markus wrote:
Hi,
kennt jemand eine Möglichkeit die letzten paar Bytes von einer großen Datei (~1,5 GB) abzuschneiden, ohne die ganze Datei kopieren zu müssen? (In der Shell oder mit C/C++)
jan@k500:~> apropos trunc truncate (2) - truncate a file to a specified length truncate (7) - empty a table ftruncate (2) - truncate a file to a specified length ... Jan
* Markus schrieb am Montag, 2003-05-05:
kennt jemand eine Möglichkeit die letzten paar Bytes von einer großen Datei (~1,5 GB) abzuschneiden, ohne die ganze Datei kopieren zu müssen? (In der Shell oder mit C/C++)
Tut's auch Python? --- schnipp --- # shorten.py -- Verkürzt eine Datei. # # Aufruf: # # python shorten.py <Dateiname> <Anzahl der am Ende abzuschneidenden Bytes> # # # Der Ablauf ist simpel, die Funktionen heißen in der glibc fast genauso, # es sollte also ein leichtes sein, es, falls nötig, in C nachzubauen. import os import sys import stat try: f = file(sys.argv[1], "r+b") except IndexError: print "Dateiname fehlt!" sys.exit(1) try: n = int(sys.argv[2]) except IndexError: print "Verkürzungsbetrag fehlt!" sys.exit(2) print "%s verkürzen um %d Byte." % (sys.argv[1], n) s = os.fstat(f.fileno()) size = s[stat.ST_SIZE] print "Größe vorher: %d Byte." % size newsize = size - n if (newsize < 0): newsize = 0 print "Datei zu klein, verkürze auf 0 Byte." os.ftruncate(f.fileno(), newsize) print "Größe nachher: %d Byte." % os.fstat(f.fileno())[stat.ST_SIZE] f.close() --- schnapp --- -- Christian Ullrich Registrierter Linux-User #125183 "Remember: 'I am a person. I have a right to the ball.'"
participants (4)
-
Christian Ullrich
-
Jan.Trippler@t-online.de
-
Markus
-
Michael Karges