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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
scrapy爬虫实例分享
Dec 28 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
javascript cookies操作集合
2010/04/12 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
python中管道用法入门实例
2015/06/04 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Python实现Restful API的例子
2019/08/31 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Python如何急速下载第三方库详解
2020/11/02 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
护理专业的自荐信
2013/10/22 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
公司活动总结范文
2014/07/01 职场文书
司考复习计划
2015/01/19 职场文书
施工员岗位职责
2015/02/10 职场文书
草房子读书笔记
2015/06/29 职场文书
个人售房合同协议书
2016/03/21 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python