admin 管理员组

文章数量: 1184232

想要实现打开dbf文件后写入数据,奈何python3网上没有任何方法,有一个人自己写了个类,基于个人要求,需要操作dbf文件实现内容添加,以下方法需要python2的环境来是实现。
需求:向八个dbf文件中插入数据

一。需要导入的模块:

import string
import time
import random
import sys
import os
import csv
import getopt
from dbfpy import dbf
import itertools
import warnings
warnings.filterwarnings('ignore')

二,实现dbf文件操作:

class Do_to_Dbf(object):
    def __init__(self,Cilent_id,Fund_acc,SecuAcc):
        self.Cilent_id=Cilent_id
        self.Fund_acc = Fund_acc
        self.SecuAcc=SecuAcc
# 创建新的dbf文件
    def writeDbfFile(self,filename,header,content):
        db=dbf.Dbf(filename,new=True)
        for field in header:
            if type(field) == unicode:
                field = field.encode('GBK')
            db.addField((field, 'C', 60))
        for record in content:
            rec = db.newRecord()
            for key, value in itertools.izip(header, record):
                if type(value) == unicode:
                    rec[key] = value.encode('GBK')
                else:
                    rec[key] = value
                rec.store()
        db.close()
# 再原有的dbf文件中追加内容
    def add_DbfFile_content(self,filename,content):
        db=dbf.Dbf(filename)
        for record in content:
            rec = db.newRecord()
            for key, value in itertools.izip(db.header, record):
                if type(value) == unicode:
                    rec[key] = value.encode('GBK')
                else:
                    rec[key] = value
                rec.store()
        db.close()
    def get_code(self):
        code = [[], []]
        code[0] = ['000002', '000060', '159901', '159930', '300030']
        code[1] = ['510010', '510300', '600036', '688001', '700360']
        return code
## 下边的函数create开头的都是创建新的dbf文件,根据需要的表头来 ##
## 下边的函数add开头的都是再原有dbf文件下添加内容 ##
    def create_custinfo(self):
        header=['CilentID','CilentName','BranchID','EncMode','TradePwd','Status']
        pwd = '34614C364D51746D79335231584559444D68337470673D3D'
        content=[]
        for i in range(len(self.Cilent_id)):
                part=[
                    self.Cilent_id[i],
                    self.Cilent_id[i],
                    self.Cilent_id[i][:4],
                    1,
                    pwd,
                    0]
                content.append(part)
        filename='doc/'+'custinfo_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_fundasset(self):
        header=['FundAcc','CurType','FundAvlBal','FundFrzBal','FundBal','FBuySale','FUncBuy','FUncSale','FFundTrsf']
        content=[]
        for i in range(len(self.Fund_acc)):
                part=[
                    self.Fund_acc[i],
                    0,
                    'F2195BC3951AAD0465B72CE593B79141',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'F2195BC3951AAD0465B72CE593B79141',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'A160C3DB0C

本文标签: 文件 入数据 加内容