1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| from ctypes import *
class OUTSTRUC(Structure):
_fields_ = [("iavo", c_char * 6), ("iavo_f", c_char),
("dins", c_char * 10), ("dins_f", c_char),
("cins", c_char), ("cins_f", c_char),
("dces", c_char * 10), ("dces_f", c_char),
("cces", c_char), ("cces_f", c_char),
("iban", c_char * 4), ("iban_f", c_char),
("natv", c_char * 3), ("natv_f", c_char),
("catv", c_char), ("catv_f", c_char),
("istr", c_char * 6), ("istr_f", c_char),
("qann", c_char * 4), ("qann_f", c_char),
("qmoi", c_char * 4), ("qmoi_f", c_char),
("qjou", c_char * 4), ("qjou_f", c_char),
("cpay", c_char * 6), ("cpay_f", c_char),
("qexe", c_char * 9), ("qexe_f", c_char),
("qex2", c_char * 9), ("qex2_f", c_char),
("ccer", c_char), ("ccer_f", c_char),
("dmaj", c_char * 10), ("dmaj_f", c_char)]
def trt_act_ctypes(lg):
""" création du fichier étendu 200 000 records, 20 Mo """
i = nbrec = 0
inFile = open('packed_file', 'r')
outFile = open('ctypes_a_plat', 'wb')
outBuf = OUTSTRUC()
outBuf.iavo_f = '$'
outBuf.dins_f = '$'
outBuf.cins_f = '$'
outBuf.dces_f = '$'
outBuf.cces_f = '$'
outBuf.iban_f = '$'
outBuf.natv_f = '$'
outBuf.catv_f = '$'
outBuf.istr_f = '$'
outBuf.qann_f = '$'
outBuf.qmoi_f = '$'
outBuf.qjou_f = '$'
outBuf.cpay_f = '$'
outBuf.qexe_f = '$'
outBuf.qex2_f = '$'
outBuf.ccer_f = '$'
outBuf.dmaj_f = '\n'
while 1:
inChr = inFile.read(lg)
if inChr == '' : break
inHex = binascii.hexlify(inChr)
nbrec += 1
outBuf.iavo = trt_pack(inHex[0:6]) #iavo
outBuf.dins = trt_date(inHex[6:15]) #dins
outBuf.cins = inChr[8:9] #cins
outBuf.dces = trt_date(inHex[18:27]) #dces
outBuf.cces = inChr[14:15] #cces
outBuf.iban = trt_pack(inHex[30:34]) #iban
outBuf.natv = inChr[17:20] #natv
outBuf.catv = inChr[20:21] #catv
outBuf.istr = trt_pack(inHex[42:48]) #istr
outBuf.qann = trt_pack(inHex[48:52]) #qann
outBuf.qmoi = trt_pack(inHex[52:56]) #qmoi
outBuf.qjou = trt_pack(inHex[56:60]) #qjou
outBuf.cpay = trt_pack(inHex[60:66]) #cpay
outBuf.qexe = trt_packdec(inHex[66:74], 4) #qexe
outBuf.qex2 = trt_packdec(inHex[74:82], 2) #qex2
outBuf.ccer = inChr[41:42] #ccer
outBuf.dmaj = trt_date(inHex[84:93]) #dmaj
outFile.write(outBuf)
inFile.close(), outFile.close() |
Partager