ikautak.log

C/C++, Python, CUDA, Android, Linux kernel, Network, etc.

pythonでファイルの分割・結合

ファイルを分割・結合するスクリプト。

まず分割する方。ファイル名を渡すと .frac0 などを末尾につけたファイルに分割される。
分割サイズはとりあえず1MB。

#!/usr/bin/env python

import sys
import os.path


def bin_div(f, size=1024*1024):
    l = os.path.getsize(f)
    div_num = (l + size - 1) / size
    last = (size * div_num) - l

    b = open(f, 'rb')
    for i in range(div_num):
        read_size = last if i == div_num-1 else size
        data = b.read(read_size)
        out = open(f + '.frac' + str(i), 'wb')
        out.write(data)
        out.close()
    b.close()


if __name__=='__main__':
    if len(sys.argv) > 1:
        bin_div(sys.argv[1])

次に結合する方。.frac0などを除いたファイル名と分割数を渡すと結合した.outを作成する。

#!/usr/bin/env python

import sys


def bin_cat(f, num):
    out = open(f + '.out', 'wb')

    for i in range(num):
        frac = open(f + '.frac' + str(i), 'rb')
        out.write(frac.read())
        frac.close()
    out.close()


if __name__=='__main__':
    if len(sys.argv) > 2:
        bin_cat(sys.argv[1], int(sys.argv[2]))