random write
Verfasst: Montag 26. Juli 2010, 14:00
Hi zusammen,
das ist jetzt wahrscheinlich 'ne Anfängerfrage die schon duzend mal gestellt wurde. Dennoch habe ich bisher (trotz Forumssuche und Google) nichts brauchbares gefunden.
Folgendes Problem: Ich habe einige Dateien (größer 150 MB) deren Header an zwei Stellen verändert werden sollen. Normalerweise mache ich das mit 'nem Hex Editor, nur bei 150+ Dateien dauert mir das einfach zu lange ...
Ich möchte nun zwei Stellen der Datei auslesen und wenn die Paraperter an dieses Stellen passen sollen sie ausgetauscht werden.
Mein Script (abgekürzt) soweit:
Das Ganze funktioniert so natürlich nicht. Die Frage ist nun wie/ob es überhaupt geht.
Es macht für mich keinen Sinn wegen 8 Bytes die kompletten 150MB neu zu schreiben, deshalb soll ja auch nur an diesen besagten 2 Stellen etwas geändert werden.
das ist jetzt wahrscheinlich 'ne Anfängerfrage die schon duzend mal gestellt wurde. Dennoch habe ich bisher (trotz Forumssuche und Google) nichts brauchbares gefunden.
Folgendes Problem: Ich habe einige Dateien (größer 150 MB) deren Header an zwei Stellen verändert werden sollen. Normalerweise mache ich das mit 'nem Hex Editor, nur bei 150+ Dateien dauert mir das einfach zu lange ...
Ich möchte nun zwei Stellen der Datei auslesen und wenn die Paraperter an dieses Stellen passen sollen sie ausgetauscht werden.
Mein Script (abgekürzt) soweit:
Code: Alles auswählen
for item in listOfFiles:
try:
file = open(item, 'rb')
file.seek(112)
get_fourcc_1 = file.read(4)
file.seek(188)
get_fourcc_2 = file.read(4)
if ( get_fourcc_1 == o_fourcc_1 and get_fourcc_2 == o_fourcc_2 ):
print get_fourcc_1, get_fourcc_2
file.close()
try:
file = open(item, 'wb')
file.seek(112)
file.write(n_fourcc_1)
file.seek(188)
file.write(n_fourcc_2)
file.close()
except IOError:
print "Error"
sys.exit(1)
except IOError:
print file, "not readable"
sys.exit(1)
Es macht für mich keinen Sinn wegen 8 Bytes die kompletten 150MB neu zu schreiben, deshalb soll ja auch nur an diesen besagten 2 Stellen etwas geändert werden.