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中使用select模块实现非阻塞的IO
Feb 03 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
python实现可逆简单的加密算法
Mar 22 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
python实现图像全景拼接
Mar 27 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python字典dict常用方法函数实例
Nov 09 Python
Django权限控制的使用
Jan 07 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 Python
python单向链表实例详解
May 25 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
SONY SRF-M100的电路分析
2021/03/02 无线电
一个php导出oracle库的php代码
2009/04/20 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP使用函数用法详解
2018/09/30 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
不错的asp中显示新闻的功能
2006/10/13 Javascript
js资料toString 方法
2007/03/13 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python正则表达式介绍
2012/08/06 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Python如何将模块打包并发布
2020/08/30 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
工程资料员岗位职责
2014/03/10 职场文书
预备党员转正考核材料
2014/06/03 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
武当山导游词
2015/02/03 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
我爱我班主题班会
2015/08/13 职场文书
社区宣传标语口号
2015/12/26 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Golang 并发编程 SingleFlight模式
2022/04/26 Golang