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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
Python中集合类型(set)学习小结
Jan 28 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
python八大排序算法速度实例对比
Dec 06 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Django之无名分组和有名分组的实现
Apr 16 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
python创建子类的方法分析
Nov 28 Python
django序列化serializers过程解析
Dec 14 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 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企业级应用之常见缓存技术篇
2011/01/27 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
PHP 代码规范小结
2012/03/08 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
php强制运行广告的方法
2014/12/01 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
职业生涯规划书范文
2014/03/10 职场文书
网站客服岗位职责
2014/04/05 职场文书
就职演讲稿范文
2014/05/19 职场文书
国际商务专业求职信
2014/07/15 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
通知格式
2015/04/27 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python