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 相关文章推荐
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
Python中的引用知识点总结
May 20 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python自动化测试之如何解析excel文件
Jun 27 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
python 利用zmail库发送邮件
Sep 11 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 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
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
python把1变成01的步骤总结
2019/02/27 Python
Python如何安装第三方模块
2020/05/28 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
《毛主席在花山》教学反思
2014/04/20 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
爱心助学感谢信
2015/01/21 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python