Pythonでファイル分割する


大容量ファイルを分割する機会があったのでPythonで実装してみた

完成版

# 分割したいファイルとそのファイルのエンコードを設定
input_file_name = "test.csv"
output_file_name = "test_%d.csv"
file_encode = "shift_jis"
# file_encode = "utf-8"

# 1ファイルあたりの行数
line_max = 10000

# 初期化
line_index = 1
file_seqno = 1

# ファイルを読み込んでwhileで1行ずつ見ていく
input_file = open(input_file_name, encoding=file_encode)
output_file = open(output_file_name % file_seqno, "w", encoding=file_encode)
line = input_file.readline()

while line:
    if line_index > line_max:
        output_file.close()
        line_index = 1
        file_seqno += 1
        output_file = open(output_file_name % file_seqno, "w", encoding=file_encode)
    output_file.write(line)
    line_index += 1
    line = input_file.readline()

input_file.close()
output_file.close()

デフォルトがutf-8なのでshift_jisなどはエンコーディング指定する必要がありました。