大きなファイルを50Mbのチャンクに分割して別のファイルに保存しようとしています。いくつかの読み書き操作を実行した後、私のチャンクの一部は50Mb(43Mb、17Mbなど)よりも小さくなりました。私はJavaで同じコードを書いていましたが、同じ問題があります。なにが問題ですか?私のコードは次の通りです:大きなファイルを分割するときに空きチャンク
ちなみに、このコードをスピードアップしてチャンクに分割する速度を上げるためにできることはありますか?
try:
f = open(self.__filename, 'rb')
except (OSError, IOError), e:
raise FileSplitterException, str(e)
bname = (os.path.split(self.__filename))[1]
fsize = os.path.getsize(self.__filename)
self.__chunksize = int(float(fsize)/float(self.__numchunks))
chunksz = self.__chunksize
total_bytes = 0
for x in range(self.__numchunks):
chunkfilename = bname + '-' + str(x+1) + self.__postfix
if x == self.__numchunks - 1:
chunksz = fsize - total_bytes
try:
print 'Writing file',chunkfilename
data = f.read(chunksz)
total_bytes += len(data)
chunkf = file(chunkfilename, 'wb')
chunkf.write(data)
chunkf.close()
except (OSError, IOError), e:
print e
continue
except EOFError, e:
print e
break
注:型変換に混乱を与えないでください。整数除算 'self .__ chunksize = fsize/self .__ numchunks'を使用してください。 – DyZ