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
参考资料
xls/csv文件转换成dbf文件的更多相关文章
- [转载]webarchive文件转换成htm文件
原文地址:webarchive文件转换成htm文件作者:xhbaxf Mac OS X系统带有文件转换功能,可以把webarchive文件变成html文件.方法是: Step 1: 建立一个文件夹 ...
- 自制 Python小工具 将markdown文件转换成Html文件
今天看到了一个Python库,名为markdown.瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具. 我的实验环境 操作系统: Windows 7 64位 旗舰版 ...
- <p><span style="font-size:14px">近期须要批量将PNM格式的文件转换成GIF文件。我尝试了例如以下的图像转换工具:</span></p>
近期须要批量将PNM格式的文件转换成GIF文件.我尝试了例如以下的图像转换工具: ImageBatch:全然免费,但只支持PNG JPEG BMP GIF四种格式 OfficeConverter:在线 ...
- Protocol Buffer使用转换工具将proto文件转换成Java文件流程及使用
Client与Server的网络通信协议传输使用google protobuf,服务器端使用的是Java 一. Protocol Buffersprotobuf全称Google Protocol Bu ...
- linux下的什么工具能将DVI文件转换成PostScript文件?
答: dvips,此工具能将由Latex或Tex生成的DVI文件转换成PostScript文件,官网在此
- 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几 ...
- chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code CHM是英语“Compiled Help Manual”的简写,即“已编译的帮助文件”.CHM ...
- C# 将PowerPoint文件转换成PDF文件
PowerPoint的优势在于对演示文档的操作上,而用PPT查看资料,反而会很麻烦.这时候,把PPT转换成PDF格式保存,再浏览,不失为一个好办法.在日常编程中和开发软件时,我们也有这样的需要.本文旨 ...
- 如何将hdf5文件转换成tflite文件
我们用keras训练模型后,通常保存的模型格式类型为hdf5格式,也就是.h5文件. 但如果我们想要移植到移动端,特别是基于tensorflow支持的移动端,那就需要转换成tflite格式. 如何转换 ...
随机推荐
- golang中函数的参数
1. 函数当做函数的参数 package main import "fmt" type HandleFunc func(int) (int, bool) func add10(nu ...
- IDEA出现Cannot resolve symbol “xxx“(无法解析符号)的解决办法
1,File->Invalidate Caches/Restart 清除缓存并重启 idea 2,检查pom文件中的依赖关系是否正确 3,maven -> Reimport 4,打开pro ...
- jenkins自动化pipline的ci/cd流水线
pipeline { agent any tools { //工具必须预先在jenkins中预配置 maven 'mvn' jdk 'jdk' } stages { stage('Env') { st ...
- linux系统——Redis集群搭建(主从+哨兵模式)
趁着这几天刚好有点空,就来写一下redis的集群搭建,我跟大家先说明,本文的redis集群因为linux服务器只是阿里云一台服务器,所以集群是redis启动不同端口,但是也能达到集群的要求.其实不同服 ...
- 人口信息普查系统-JavaWeb-五
今天分享人口普查系统删除查询前端代码 <%@ page language="java" contentType="text/html; UTF-8" pa ...
- Spring专题2: DI,IOC 控制反转和依赖注入
合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...
- python 小兵(1)
变量规则 1.只能以数字,字母,下划线命名 2.不能使用数字开头 3.不能使用python关键字 4.不建议用拼音或中文 5区分大小写 6推荐使用驼峰,下划线 全部大写是常量 注释 # 单行注释 (当 ...
- JavaScripts调用摄像头【MediaDevices.getUserMedia()】
h5调用摄像头(允许自定义界面)[MediaDevices.getUserMedia()] <!DOCTYPE html> <html lang="en"> ...
- cloudcompare备忘录(1)
1.找点 然后直接在需要的位置上点就会出现这个点的信息了~! 2.想看一个三d的切面时候 先选中切的目标 点击小剪刀~ 点击鼠标左键四次来框选,然后点击鼠标右键确认 再点击这个按钮就切好了
- Posix 信号
转载请注明来源:https://www.cnblogs.com/hookjc/ 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯.有名信号灯总是既可用于线程间的同步,又可以用于进 ...