ファイルAとファイルBのマッチングスクリプト
キーマッチしたレコードのみをファイルBから抽出
※ほぼ個人メモです。
# -*- coding: utf-8 -*-
# ファイルAとファイルBでキーマッチング
# 前提
# ・ファイルAとファイルBのキーは昇順でソートされている
# ・ファイルは固定長
#
# マッチングファイル名、出力ファイル名
fileA = "a.txt"
fileB = "b.txt"
fileOut = "out.txt"
# ファイルのレコードサイズ
recsizeA = 4
recsizeB = 8
# キー開始位置
keyposA = 0
keyposB = 0
# キー長
keysize = 2
#-----------------------------------------------
# 処理開始
#-----------------------------------------------
fpa = open(fileA, 'rb')
fpb = open(fileB, 'rb')
fpout = open(fileOut, 'wb')
reca = fpa.read(recsizeA)
recb = fpb.read(recsizeB)
# どちらかのファイルが読み取れなくなるまで繰返し
while len(reca) == recsizeA and len(recb) == recsizeB :
if reca[keyposA:keysize] == recb[keyposB:keysize] :
fpout.write(recb)
recb = fpb.read(recsizeB)
elif reca[keyposA:keysize] < recb[keyposB:keysize] :
reca = fpa.read(recsizeA)
elif reca[keyposA:keysize] > recb[keyposB:keysize] :
recb = fpb.read(recsizeB)
fpa.close()
fpb.close()
fpout.close()