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抽象基类用法实例分析
Jun 04 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python中类型检查的详细介绍
Feb 13 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
Django数据统计功能count()的使用
Nov 30 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+MYSQL会员系统的开发实例教程
2014/08/23 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
JavaScript中的History历史对象
2008/01/16 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
微信小程序实现轮播图效果
2017/09/07 Javascript
详解vue组件基础
2018/05/04 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
python pandas模块基础学习详解
2019/07/03 Python
在Python中COM口的调用方法
2019/07/03 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
基于python实现模拟数据结构模型
2020/06/12 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
ktv收银员岗位职责
2013/12/16 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
优秀实习生感言
2014/03/01 职场文书
海飞丝的广告词
2014/03/20 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery