Python修改DBF文件指定列


Posted in Python onDecember 19, 2020

一、需求:

某公司每日收到一批DBF文件,A系统实时处理后将其中dealstat字段置为1(已处理)。现在每日晚间B系统也需要处理该文件,因此需将文件中dealstat字段修改为空(未处理)。

二、分析:

1、应创建副本进行修改

解答:使用shutil.copy

2、修改DBF

解答:使用dbf模块。此模块能找到的文档比较旧,需要结合代码进行理解。 

三、代码实现:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_


"""
@Time  : 2020-01-15 10:43
@Author : Peanut_C
@FileName: DBF_Modifier.py
"""

import os
import time
import shutil
import dbf


source_dir = r'D:\'
destination_dir = r'E:\'

"""删除目标文件夹内旧文件"""
os.chdir(destination_dir)
for file in os.listdir(destination_dir):
  os.remove(file)
print('INFO ===>>> 历史文件删除完成!\n')

"""文件拷贝任务"""
os.chdir(source_dir)
for file in os.listdir(source_dir):
  shutil.copy(file, destination_dir)
print('INFO ===>>> 今日文件拷贝完成!\n')

"""DBF修改任务"""
os.chdir(destination_dir)
for file in os.listdir(destination_dir):
  tb = dbf.Table(file) # 创建tb实例
  # print(tb) # 打印tb信息
  titles = dbf.get_fields(file) # 将表头以列表形式打印出来
  # print(titles)
  if 'dealstat' in titles:
    flag = 0 # 文件修改标记
    tb.open(mode=dbf.READ_WRITE) # 读写方式打开tb
    for record in tb:
      with record as r:
        if r.dealstat is not None:
          # print(r.dealstat)
          r.dealstat = ''
          flag = 1 # 修改后将标记改为1
          # print(r.dealstat)
        else:
          continue
      # print(record.dealstat)
    tb.close()
    if flag == 0:
      print(file + "===>>>没有要修改的数据!\n")
    else:
      print(file + "===>>>DealStat字段修改完毕!\n")
  else:
    print(file + "===>>>没有DealStat字段!\n")

print('INFO ===>>> 今日文件修改完毕!\n')

四、运行情况:

运行程序,首先清空目标目录,然后创建文件副本,最后依次处理目录中的DBF文件。

虽是个简单的功能,但可节省不少时间,依此类推可对DBF进行其他修改。

希望能帮到有需要的朋友。

多多指教!

以上就是Python修改DBF文件指定列的详细内容,更多关于Python修改DBF文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现对一个完整url进行分割的方法
Apr 29 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
Python打印特殊符号及对应编码解析
May 07 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 #Python
Python+Xlwings 删除Excel的行和列
Dec 19 #Python
python Zmail模块简介与使用示例
Dec 19 #Python
python中实现栈的三种方法
Dec 19 #Python
python中实现词云图的示例
Dec 19 #Python
python 实现图片批量压缩的示例
Dec 18 #Python
python 基于opencv实现高斯平滑
Dec 18 #Python
You might like
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php5数字型字符串加解密代码
2008/04/24 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
9个比较实用的php代码片段
2016/03/15 PHP
javascript实用小函数使用介绍
2013/11/11 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python实现2048小游戏
2015/03/30 Python
简述Python2与Python3的不同点
2018/01/21 Python
使用Scrapy爬取动态数据
2018/10/21 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
python计算导数并绘图的实例
2020/02/29 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
数字漫画:comiXology
2020/06/13 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
保荐人的岗位职责
2013/11/19 职场文书
个性婚礼策划方案
2014/05/17 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python