FILE.read() liest nicht alle daten
Verfasst: Sonntag 5. Februar 2012, 07:18
Guten Morgen Forum,
mein Problem ist, dass ein
nicht das gewünschte Ergebniss (nämlich vom offset bis EOF in den buffer zu schreiben) bewirkt.
Vielleicht mache ich einen erheblichen Denkfehler?
Liebe Grüße
Keks
EDIT:
Die Ausgabe des Scriptes. Ich erwarte eigentlich dass die Bufferlen immer um $bytes kleiner wird, was sie offensichtlich nicht macht!:
mein Problem ist, dass ein
Code: Alles auswählen
FILE.seek(offset)
buffer = FILE.read()Vielleicht mache ich einen erheblichen Denkfehler?
Code: Alles auswählen
#!/usr/bin/env python
from time import sleep
def split_file(file="C:/calc.exe",bytes=10000,zfill=10): # generate files each $bytes bytes smaller
try:
FILE = open(file,"r",100000000)
except all:
print "Could not open "+file+" for reading!"
exit
offset = 0
while FILE:
FILE.seek(offset)
print "Set to offset: " + str(offset)
buffer = FILE.read()
print "Bufferlen: "+ str(len(buffer))
FILE.seek(offset) # seek again because FILE.read() sets the cursor to EOF
if len(buffer) == 0: # EOF reached
quit()
nfilename = file+str(offset).zfill(zfill) # gen filename; fill with zeros
try:
NFILE = open(nfilename,"w",0)
print nfilename + " created!\n"
except all:
print nfilename + " could not be created!"
NFILE.write(buffer) # write all stuff to the new (smaller) file
NFILE.close()
offset = offset + bytes # gen new file cursor position
FILE.close()
def main():
split_file()
if __name__ == '__main__':
main()
Liebe Grüße
Keks
EDIT:
Die Ausgabe des Scriptes. Ich erwarte eigentlich dass die Bufferlen immer um $bytes kleiner wird, was sie offensichtlich nicht macht!:
Code: Alles auswählen
Set to offset: 0
Bufferlen: 1468
C:/calc.exe0000000000 created!
Set to offset: 10000
Bufferlen: 3762
C:/calc.exe0000010000 created!
Set to offset: 20000
Bufferlen: 1831
C:/calc.exe0000020000 created!
Set to offset: 30000
Bufferlen: 903
C:/calc.exe0000030000 created!
Set to offset: 40000
Bufferlen: 3171
C:/calc.exe0000040000 created!
Set to offset: 50000
Bufferlen: 9101
C:/calc.exe0000050000 created!
Set to offset: 60000
Bufferlen: 2247
C:/calc.exe0000060000 created!
Set to offset: 70000
Bufferlen: 1610
C:/calc.exe0000070000 created!
Set to offset: 80000
Bufferlen: 8923
C:/calc.exe0000080000 created!
Set to offset: 90000
Bufferlen: 376
C:/calc.exe0000090000 created!
Set to offset: 100000
Bufferlen: 14688
C:/calc.exe0000100000 created!
Set to offset: 110000
Bufferlen: 4688
C:/calc.exe0000110000 created!
Set to offset: 120000
Bufferlen: 0 80000
Bufferlen