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 相关文章推荐
django2 快速安装指南分享
Jan 05 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
python 多线程串行和并行的实例
Feb 22 Python
Python自定义一个异常类的方法
Jun 27 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python解释器spython使用及原理解析
Aug 24 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
Python如何读写CSV文件
Aug 13 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
详解Python openpyxl库的基本应用
Feb 26 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
PHP SOCKET编程详解
2015/05/22 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
Vue仿百度搜索功能
2020/12/28 Vue.js
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python3 集合set入门基础
2020/02/10 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
Python中求对数方法总结
2020/03/10 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
Python接口自动化测试的实现
2020/08/28 Python
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
自我评价是什么
2014/01/04 职场文书
会议接待欢迎词
2014/01/12 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
创业计划书之寿司
2019/07/19 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL