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语言编写电脑时间自动同步小工具
Mar 08 Python
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Python模块搜索路径代码详解
Jan 29 Python
Python从函数参数类型引出元组实例分析
May 28 Python
python3射线法判断点是否在多边形内
Jun 28 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
python numpy 矩阵堆叠实例
Jan 17 Python
python数据预处理 :数据抽样解析
Feb 24 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
采用call方式实现js继承
2014/05/20 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python实现的矩阵类实例
2017/08/22 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
拓展培训心得体会
2014/01/04 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
英文商务邀请函范文
2015/01/31 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
代码解析React中setState同步和异步问题
2021/06/03 Javascript
Python读写yaml文件
2022/03/20 Python