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よりもっと多く読み込んでも耐えれると思います。

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です