xls/csv文件转换成dbf文件
转至:https://blog.csdn.net/linhai1028/article/details/80211252
编写的一个小脚本,主要是利用python中的pandas,xlrd,dbfpy包将excel中的xls/csv文件中转化成dbf文件
一、安装相关包
pip install xlrd pip install dbfpy
二、实现
代码如下:
# -*- coding: utf-8 -*- __author__ = 'lihailin' __mail__ = '415787837@qq.com' __date__ = '2018-05-04' __version__ = 1.0 import pandas as pd import os,sys from dbfpy import dbf import csv def xls2csv(xlsFile, csvFileName): # excel文件转csv data = pd.read_excel(xlsFile, 'pcp_lookup', index_col=0) data.to_csv(csvFileName, encoding='utf-8') def genDbfHeader(dbfDb, csvHeader): '''生成dbf文件表头 Args: dbfDb: Dbf类实例 csvHeader: list, 其值为字符串用于创建dbf表头的字段 ''' for filed in csvHeader: # print filed,'--------' tmp = (filed, 'C', 25) # 定义字段 dbfDb.addField(tmp) return dbfDb def writeDbfData(dbfDb, dbfData): '''写数据到dbf文件 Args: dbfDb: Dbf类实例 dbfData: dict, key为Dbf的header中的字段 ''' for onedata in dbfData: # print onedata rec = dbfDb.newRecord() for key in onedata.keys(): # 对每条记录的所有字段写数据 # print(key) rec[key] = onedata[key] rec.store() def csv2dbf(csvFile, dbfFile): # csv文件转dbf文件 with open(csvFile, 'rb') as csvfile: # dbf写表头 reader = csv.reader(csvfile, delimiter=',', quotechar='|') header_row = next(reader) db = dbf.Dbf(dbfFile, new=True) db = genDbfHeader(db, header_row) with open(csvFile, 'rb') as csvfile: # 写dbf数据 reader = csv.DictReader(csvfile) # 字典形式 writeDbfData(db, reader) db.close() def main(): # 遍历一个文件夹下的所有.xlsx文件,并将其转换成.dbf文件 xlsDictory = '.' #文件夹 for xlsFile in os.listdir(xlsDictory): tmp = xlsFile.split('.')[0] # if '.xlsx' in xlsFile: # continue # if '.csv' not in xlsFile: # continue csvFileName = '%s.csv' % tmp if '.xlsx' in xlsFile: # 如果是.xlsx先转成.csv xls2csv(xlsFile, csvFileName) dbfFileName = '%s.dbf' % tmp csv2dbf(csvFileName, dbfFileName) os.system('mkdir dbfFile') os.system('mv *.dbf dbfFile') if __name__ == '__main__': main()
环境
- python2.7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?