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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python 通过URL打开图片实例详解
Jun 01 Python
python基础之入门必看操作
Jul 26 Python
使用Python处理BAM的方法
Sep 28 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
python gdal安装与简单使用
Aug 01 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Python HTMLTestRunner库安装过程解析
May 25 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
写的htc的数据表格
2007/01/20 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
python检测lvs real server状态
2014/01/22 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python实现简单登录验证
2016/04/13 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
C# Debug和Testing相关面试题
2015/10/25 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
室内设计专业个人的自我评价
2013/12/18 职场文书
一年级班主任寄语
2014/01/19 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python