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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 Python
Django Rest framework频率原理与限制
Jul 26 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Python eval函数原理及用法解析
Nov 14 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python 用户输入和while循环的操作
May 23 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利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
JS实现图片切换效果
2018/11/17 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python添加模块搜索路径方法
2017/09/11 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python实现Flappy Bird源码
2018/12/24 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
新学期开学寄语
2014/01/18 职场文书
2015中秋祝酒词
2015/08/12 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
springboot用户数据修改的详细实现
2022/04/06 Java/Android