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字符串对象的实现
Dec 24 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python 定义给定初值或长度的list方法
Jun 23 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
python_mask_array的用法
Feb 18 Python
opencv检测动态物体的实现
Jul 21 Python
Python音乐爬虫完美绕过反爬
Aug 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
一个PHP的String类代码
2010/04/20 PHP
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python中map的基本用法示例
2018/09/10 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
详解Django配置JWT认证方式
2020/05/09 Python
Python如何读写CSV文件
2020/08/13 Python
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
好邻里事迹材料
2014/01/16 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
高一军训决心书
2015/02/05 职场文书
青年志愿者活动感想
2015/08/07 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python