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素数检测的方法
May 11 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
python实现微信小程序自动回复
Sep 10 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
python实现对输入的密文加密
Mar 20 Python
让你的Python代码实现类型提示功能
Nov 19 Python
Django 自动生成api接口文档教程
Nov 19 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python实现人像动漫化的示例代码
May 17 Python
Python Flask异步发送邮件实现方法解析
Aug 01 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
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php之可变变量的实例详解
2017/09/12 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
新电JAVA笔试题目
2014/08/31 面试题
数学教学随笔感言
2014/02/17 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
功夫熊猫观后感
2015/06/10 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python