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 05 Python
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
python实现跨文件全局变量的方法
Jul 07 Python
python实现堆栈与队列的方法
Jan 15 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 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
正则表达式语法
2006/10/09 Javascript
精通php的十大要点(上)
2009/02/04 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
Ionic快速安装教程
2016/06/03 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
请假条标准格式规范
2014/04/10 职场文书
一年级学生评语大全
2014/04/21 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
满月酒邀请函
2015/01/30 职场文书
学校中秋节活动总结
2015/03/23 职场文书
离婚起诉书范本
2015/05/18 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
初中信息技术教学反思
2016/02/16 职场文书