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 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python3音乐播放器简单实现代码
Apr 20 Python
win10系统中安装scrapy-1.1
Jul 03 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python实现Flappy Bird源码
Dec 24 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 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
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
使用Python开发windows GUI程序入门实例
2014/10/23 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
注塑工厂厂长岗位职责
2013/12/02 职场文书
新护士岗前培训制度
2014/02/02 职场文书
村庄环境整治方案
2014/05/15 职场文书
房地产推广策划方案
2014/05/19 职场文书
大学辅导员述职报告
2015/01/10 职场文书
工程部经理岗位职责
2015/02/02 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
浅谈Python数学建模之固定费用问题
2021/06/23 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL