亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python如何寫入dbf文件內(nèi)容及創(chuàng)建dbf文件

 更新時(shí)間:2023年08月15日 09:01:39   作者:lover-517  
這篇文章主要介紹了python如何寫入dbf文件內(nèi)容及創(chuàng)建dbf文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

想要實(shí)現(xiàn)打開dbf文件后寫入數(shù)據(jù),奈何python3網(wǎng)上沒(méi)有任何方法,有一個(gè)人自己寫了個(gè)類,基于個(gè)人要求,需要操作dbf文件實(shí)現(xiàn)內(nèi)容添加,以下方法需要python2的環(huán)境來(lái)是實(shí)現(xiàn)。

需求:向八個(gè)dbf文件中插入數(shù)據(jù)

一、需要導(dǎo)入的模塊

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')

二、實(shí)現(xiàn)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
# 創(chuàng)建新的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文件中追加內(nèi)容
    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
## 下邊的函數(shù)create開頭的都是創(chuàng)建新的dbf文件,根據(jù)需要的表頭來(lái) ##
## 下邊的函數(shù)add開頭的都是再原有dbf文件下添加內(nèi)容 ##
    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',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'BAFBDC944A98ADCD131416B325BE8D3C'
                ]
                content.append(part)
        filename='doc/'+'fundasset_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_fundinfo(self):
        header=['FundAcc','FAccType','ClientID','TradeWays','FAccStatus','FundLimits','TrdRights','FundRights','CreditFlag','CreStatus','InvestType']
        content=[]
        for i in range(len(self.Fund_acc)):
                part=[
                    self.Fund_acc[i],
                    1,
                    self.Cilent_id[i],
                    'jk012345678',
                    0,
                    '?',
                    '01234567',
                    '@',
                    0,
                    0,
                    0
                ]
                content.append(part)
        filename='doc/'+'fundinfo_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_fundtrdctrl(self):
        header=['FundAcc','Market','BSFlag','StkType','StkCode','Direct']
        content=[]
        # for i in range(len(self.Fund_acc)):
        #         part=[
        #             self.Fund_acc[i],
        #             1,
        #             2,
        #             0,
        #             '002612',
        #             1
        #         ]
        #         content.append(part)
        # print(content)
        filename='doc/'+'fundtrdctrl_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_secuinfo(self):
        header=['ClientID','SecuAcc','SAccType','Market','RegFlag','Seat','Status','SAccLimits','SecuRights']
        content=[]
        for i in range(len(self.Cilent_id)):
            for j in range(2):
                seat=['016701','']
                part=[
                    self.Cilent_id[i],
                    self.SecuAcc[j][i],
                    1,
                    j,
                    j,
                    seat[j],
                    0,
                    '',
                    '@'
                ]
                content.append(part)
        filename='doc/'+'secuinfo_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_SJSKS(self):
        header=['KSXWDM','KSGDDM','KSYWLB','KSKSGE','KSFSRQ','KSBYZD']
        content=[]
        # for i in range(len(Fund_acc)):
        #         part=[
        #             '',
        #             '',
        #             '',
        #             '',
        #             '',
        #         ]
        #         content.append(part)
        filename='doc/'+'SJSKS_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_stkasset(self):
        header=['FundAcc','Market','SecuAcc','StockCode','StkAvlQty','StkFrzQty','StkBal',
                'SBuySale','SBuyUnFrz','SSaleFrz','LstBuyCst','LstprfCst','BuyCst',
                'ProfitCst','StkRemain','StkCorpRem','CreStkBal']
        content=[]
        for i in range(len(self.Fund_acc)):
            for j in range(2):
                codes=self.get_code()
                for code in codes[j]:
                    part=[
                        self.Fund_acc[i],
                        j,
                        self.SecuAcc[j][i],
                        code,
                        'F461FA1CB2A69A4EBB12F130455748DB',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'F461FA1CB2A69A4EBB12F130455748DB',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        ]
                    content.append(part)
        filename='doc/'+'stkasset_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def create_zqyXXXXX(self):
        header=['gddm','zqye','qysl','kcqy','gsdm','zhxh','djrq','clbz']
        content=[]
        # for i in range(len(Fund_acc)):
        #         part=[
        #             '',
        #             '',
        #             '',
        #             '',
        #             '',
        #             '',
        #             '',
        #             '',
        #         ]
        #         content.append(part)
        filename='doc/'+'zqyXXXXX_v01_12360000_3_%s.dbf'%(time.strftime('%Y%m%d_%H',time.localtime()))
        self.writeDbfFile(filename,header,content)
    def add_custinfo(self):
        content=[]
        pwd = '34614C364D51746D79335231584559444D68337470673D3D'
        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_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_fundasset(self):
        content=[]
        for i in range(len(self.Fund_acc)):
                part=[
                    self.Fund_acc[i],
                    0,
                    'F2195BC3951AAD0465B72CE593B79141',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'F2195BC3951AAD0465B72CE593B79141',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'A160C3DB0CE4098FDCD07FC86865BF33',
                    'BAFBDC944A98ADCD131416B325BE8D3C'
                ]
                content.append(part)
        filename='doc/fundasset_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_fundinfo(self):
        content=[]
        for i in range(len(self.Fund_acc)):
                part=[
                    self.Fund_acc[i],
                    1,
                    self.Cilent_id[i],
                    'jk012345678',
                    0,
                    '?',
                    '01234567',
                    '@',
                    0,
                    0,
                    0
                ]
                content.append(part)
        filename='doc/fundinfo_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_fundtrdctrl(self):
        content=[]
        filename='doc/fundtrdctrl_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_secuinfo(self):
        content=[]
        for i in range(len(self.Cilent_id)):
            for j in range(2):
                seat=['016701','']
                part=[
                    self.Cilent_id[i],
                    self.SecuAcc[j][i],
                    1,
                    j,
                    j,
                    seat[j],
                    0,
                    '',
                    '@'
                ]
                content.append(part)
        filename='doc/secuinfo_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_SJSKS(self):
        content=[]
        filename='doc/SJSKS_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_stkasset(self):
        content=[]
        for i in range(len(self.Fund_acc)):
            for j in range(2):
                codes=self.get_code()
                for code in codes[j]:
                    part=[
                        self.Fund_acc[i],
                        j,
                        self.SecuAcc[j][i],
                        code,
                        'F461FA1CB2A69A4EBB12F130455748DB',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'F461FA1CB2A69A4EBB12F130455748DB',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        '77E3F6BDC6D282F4FA3841AD363517CD',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        'BAFBDC944A98ADCD131416B325BE8D3C',
                        ]
                    content.append(part)
        filename='doc/stkasset_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)
    def add_zqyXXXXX(self):
        content=[]
        filename='doc/zqyXXXXX_v01_12360000_3_20191014_01.dbf'
        self.add_DbfFile_content(filename,content)

三、生成需要的數(shù)據(jù)和提供腳本參數(shù)

# 因?yàn)轫?xiàng)目要實(shí)現(xiàn)自動(dòng)化腳本,傳入兩個(gè)參數(shù),從那個(gè)賬號(hào)開始,以及多少個(gè)數(shù)據(jù) #
def message(argv):
    start_account = ""
    num = ""
    try:
        opts, args = getopt.getopt(argv, "hs:n:", ["help", "start_account=", "num="])
    except getopt.GetoptError:
        print('Error:create_dbf_file.py -s <start_account> -n <num>')
        print('   or: create_dbf_file.py --start_account=<start_account> --num=<num>')
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            print(' create_dbf_file.py -s <start_account> -n <num>')
            print(' create_dbf_file.py --start_account=<start_account> --num=<num>')
            sys.exit()
        elif opt in ("-s", "--start_account"):
            start_account = arg
        elif opt in ("-n", "--num"):
            num = arg
def get_account(start_account,num):
    accounts = []
    for i in range(num):
        account=start_account +i
        accounts.append(str(account))
    return accounts
def get_secuacc(tools,num):
    secuacc=[[],[]]
    for i in ['0','A']:
        if i=='0':
            passwds = secuacc[0]
        else:
            passwds = secuacc[1]
        while len(passwds)< int(num):
            part=random.sample(tools,9)
            passwd="".join(part)
            if passwd in passwds:
                continue
            else:
                passwds.append(i+passwd)
    return secuacc
# 保存數(shù)據(jù)
def create_to_csv(file_path,filename,data):
    f=open(file_path+'/'+filename,'wb')
    writer=csv.writer(f)
    a=[]
    for i in data:
            a.append(i.decode("utf-8").encode("gbk"))
    writer.writerows(a)
    f.close()
def read_to_csv(filename):
    reader=csv.reader(open(filename))
    a=[]
    for i in reader:
        s=''.join(i)
        a.append(s)
    return a

四、調(diào)用

if __name__ == '__main__':
	# 代碼需要命令行執(zhí)行,需要傳入?yún)?shù),有提示在message函數(shù)里 #
    tools=string.digits
    message(argv=sys.argv[1:])
    Cilent_id=get_account(int(sys.argv[1]),int(sys.argv[2]))
    Fund_acc=get_account(int(time.strftime('%m%d%H%S0000',time.localtime())),int(sys.argv[2]))
    SecuAcc=get_secuacc(tools,int(sys.argv[2]))
    file_path=os.getcwd()+'/data'
    if os.path.isdir(file_path):
        pass
    else:
        os.mkdir(file_path)
    create_to_csv(file_path,'Cilent_id',Cilent_id)
    create_to_csv(file_path,'Fund_acc',Fund_acc)
    create_to_csv(file_path,'SecuAcc_SH',SecuAcc[0])
    create_to_csv(file_path, 'SecuAcc_SZ', SecuAcc[1])
    add_dbffile=Do_to_Dbf(Cilent_id,Fund_acc,SecuAcc)
    # add_dbffile.create_custinfo()
    # add_dbffile.create_fundasset()
    # add_dbffile.create_fundinfo()
    # add_dbffile.create_fundtrdctrl()
    # add_dbffile.create_SJSKS()
    # add_dbffile.create_zqyXXXXX()
    # add_dbffile.create_stkasset()
    # add_dbffile.create_secuinfo()
    add_dbffile.add_custinfo()
    add_dbffile.add_fundasset()
    add_dbffile.add_fundinfo()
    add_dbffile.add_fundtrdctrl()
    add_dbffile.add_secuinfo()
    add_dbffile.add_SJSKS()
    add_dbffile.add_stkasset()
    add_dbffile.add_zqyXXXXX()

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python編寫Logistic邏輯回歸

    python編寫Logistic邏輯回歸

    這篇文章主要介紹了python編寫Logistic邏輯回歸的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)的解決方案

    Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)教程,通過(guò)圖文并茂的形式給大家介紹了配置自動(dòng)代碼提示的方法,需要的朋友可以參考下
    2022-01-01
  • python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實(shí)例

    python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實(shí)例

    這篇文章主要介紹了python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python實(shí)現(xiàn)發(fā)送帶附件的郵件代碼分享

    python實(shí)現(xiàn)發(fā)送帶附件的郵件代碼分享

    在本篇文章里小編給大家整理的是關(guān)于python實(shí)現(xiàn)發(fā)送帶附件的郵件代碼分享內(nèi)容,需要的朋友們可以參考下。
    2020-09-09
  • python?Tkinter模塊使用方法詳解

    python?Tkinter模塊使用方法詳解

    Python的GUI庫(kù)非常多,之所以選擇 Tkinter,一是最為簡(jiǎn)單,二是自帶庫(kù),不需下載安裝,隨時(shí)使用,跨平臺(tái)兼容性非常好,下面這篇文章主要給大家介紹了關(guān)于python?Tkinter模塊使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Python+AI實(shí)現(xiàn)給老照片上色

    Python+AI實(shí)現(xiàn)給老照片上色

    今天給大家分享一個(gè)有趣的AI項(xiàng)目——利用NoGAN的圖像增強(qiáng)技術(shù)給老照片著色,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-06-06
  • Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例

    Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例

    這篇文章主要介紹了Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python發(fā)送email的3種方法

    Python發(fā)送email的3種方法

    這篇文章主要介紹了Python發(fā)送email的3種方法,本文講解了使用登錄郵件服務(wù)器方法、調(diào)用sendmail命令、使用smtp服務(wù)來(lái)發(fā)送三種方法,需要的朋友可以參考下
    2015-04-04
  • Python錯(cuò)誤處理操作示例

    Python錯(cuò)誤處理操作示例

    這篇文章主要介紹了Python錯(cuò)誤處理操作,結(jié)合實(shí)例形式分析了Python使用try...except...finaly語(yǔ)句進(jìn)行錯(cuò)誤處理的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Pycharm無(wú)法使用已經(jīng)安裝Selenium的解決方法

    Pycharm無(wú)法使用已經(jīng)安裝Selenium的解決方法

    今天小編就為大家分享一篇Pycharm無(wú)法使用已經(jīng)安裝Selenium的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論