最近遇到一道面试题,用python3实现如下功能:有两个dbf文件1.dbf,2.dbf,将2.dbf文件中的数据插入到1.dbf中,重复数据无需插入。上网查了很多资料,看了很多外置库排了一些坑。
外部库 适用python版本 实现功能
pdfpy python2.x 可以对DBF文件进行写入
dbfread python2.x/3.x 可以对DBF文件的读取,删除
xlwt python2.x/3.x 可以对DBF文件进行写入
openpyxl python2.x/3.x 不可以对DBF文件进行读取
xlrd python2.x/3.x 不可以对DBF文件进行读取
xlsxwriter python2.x/3.x 还没试

总结:想要通过python3实现对DBF文件的读写,可以通过dbfread和xlwt这两个外置库。

知道了使用哪些库,那么面试题就解决了一大半。

from dbfread import DBF
import xlwt

table1=DBF('E:\pythoninterviewquestions\SCD_98_601_20200327_DJ.DBF',encoding='gbk',char_decode_errors='ignore')
table2=DBF('E:\pythoninterviewquestions\SCD_98_601_20200327_DJ_add.DBF')

list1=[table1,table2]
data=[]
row1=()

for i in list1:
    for rows in i:
        row1 =tuple(rows.keys())
        temp=tuple(rows.values())
        if temp not in data:
            data.append(temp)

data.insert(0,row1)
# print(data)
# print(len(data))

#向meng_three.DBF写入
wb = xlwt.Workbook() #创建工作薄
f = wb.add_sheet('class1') #创建工作表

for i in range(len(data)):
    for j in range(len(row1)):
        f.write(i,j,data[i][j])

wb.save('E:\pythoninterviewquestions\meng_three.DBF')