Ich bin mir nicht sicher ob es sich hier um einen Python Fehler handelt oder ob read() einfach nur komische Sachen macht.
Ich benutze Python 2.7 auf Win XP SP3 2 GB Memory
Die Kruzfassung, ich lese binär einen Header aus Datei 1, entferne den Header aus Datei 2 hänge diesen an Header 1 an und schreibe das Ganze in einen neuen File.
Die fertige Datei is jedoch jedesmal defekt. Ich habe festgestellt das Python nachdem ich den Header in das neue File geschrieben habe, einfach mal zwei Bytes dazwischen geschubst hat.
Kurzerhand habe ich mal nur den Header mir via HexEditor angeschaut und siehe da: nach 402 Bytes (0x192) wurde das Zeichen 0x0d eingefügt das im Original header an dieser Stelle nicht vorkommt.
wie kann das sein ??
Code: Alles auswählen
import sys, os, re
listOfFiles = []
header_file = open("header.bin",'rb')
a_header = header_file.read()
for root, dirs, files in os.walk('.'):
for items in files:
fullPathName = os.path.join(root,items)
if ( fullPathName.endswith(".jpg") ):
listOfFiles.append(fullPathName)
for item in listOfFiles:
try:
new_filename = "n_" + str(item)[2:]
print "creating new file: ", new_filename
new_file = open(new_filename, 'w')
new_file.write(a_header)
new_file.close()
#new_file = open(new_filename, 'a')
#old_file = open(item, 'rb+')
#old_file.seek(0x14)
#tmp_oldfile = old_file.read()
#new_file.write(tmp_oldfile)
#new_file.close
except IOError:
print sys.exc_info()