Pythonでバイナリファイルを読み書きする
Pythonでバイナリファイルを読み書きするサンプルです。
Windows標準ではファイル分割のコマンドやツールがありません。下記はバイナリエディタでも開けない巨大ファイルから指定したバイト数だけ切り出すサンプルです。(結局、Pythonのインストールは必要ですが・・・)
Pythonは巨大ファイルのオープンもスムーズでいいですね。
サンプル
#!usr/bin/env python
# -*- coding: utf-8 -*-
#==================================================
# import.
#==================================================
from __future__ import with_statement
import codecs
import sys
SPLIT_SIZE = 5242880 # 1024 * 1024 * 5
def cut_file(input, max_size, output):
read_size = 0
with codecs.open(output, 'wb') as f_out:
with codecs.open(input, 'rb') as f_in:
while True:
if (max_size < read_size + SPLIT_SIZE):
bytes = f_in.read(max_size - read_size)
print "exit"
else:
bytes = f_in.read(SPLIT_SIZE)
if bytes == "":
break;
f_out.write(bytes)
read_size += len(bytes)
if (max_size <= read_size):
break;
#;
#;
#;
#;
#==================================================
# main (Console Entry).
#==================================================
if __name__=="__main__":
args = sys.argv
argc = len(args)
cut_file(args[1], int(args[2]), args[3])
sys.exit()
# --- End Of File ---
解説
ファイル先頭からmax_size
だけを切り出すサンプルです。
読み込みは5Mbyte(SPLIT_SIZE)
づつ行っています。この値が小さいと処理が遅くなります。実際には5Mbyte
よりもっと多く読み込んでも耐えれると思います。