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学习必备知识汇总
Sep 08 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
python多线程之事件Event的使用详解
Apr 27 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
将python代码和注释分离的方法
2018/04/21 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python中常见的数制转换有哪些
2020/05/27 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
校园达人秀策划书
2014/01/12 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
统计专业自荐书
2014/07/06 职场文书
好的旅游活动方案
2014/08/19 职场文书
龙门石窟导游词
2015/02/02 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
文化苦旅读书笔记
2015/06/29 职场文书