码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python(43) dbf文件读写


    自己封装的dbf文件操作库

    dbf库能完成增删改查操作且一直有更新所以使用此库进行封装

    1. import dbf
    2. class DbfHelper:
    3. def __init__(self, path, field_specs=None):
    4. """
    5. :param path:
    6. :param field_specs: 'name C(30); age N(3,0); birth D'
    7. field_specs 有内容时为新建(会覆盖已有文件),无内容时不会新建
    8. """
    9. self.table = dbf.Table(path, field_specs)
    10. self.table.open(mode=dbf.READ_WRITE)
    11. def append_data(self, data):
    12. """
    13. :param data: tuple or list : (('jjj',111,dbf.Date(2000,1,2),(),())
    14. :return:
    15. """
    16. for item in data:
    17. self.table.append(item)
    18. def add_fields(self,field_specs):
    19. """
    20. :param field_specs: 'name C(30); age N(3,0); birth D'
    21. :return:
    22. """
    23. self.table.add_fields(field_specs)
    24. def set_field_value(self, row, field, value):
    25. with self.table[row] as rd:
    26. setattr(rd, field, value)
    27. def set_value_by_index(self, row, col, value):
    28. with self.table[row] as rd:
    29. rd[col] = value
    30. def close(self):
    31. self.table.close()
    32. def get_field_names(self):
    33. return list(self.table.field_names)
    34. def convert_list_dict(self):
    35. field_nams = list(self.table.field_names)
    36. return [ dict(zip(field_nams,list(record))) for record in dd.table]
    37. def delete_fields(self,fields):
    38. """
    39. 删除对应列及数据
    40. :param fields:
    41. :return:
    42. """
    43. self.table.delete_fields(fields)
    44. def delete(self,row):
    45. dbf.delete(self.table[row])
    46. self.table.pack()
    47. if __name__ == '__main__':
    48. dd = DbfHelper('temptable11.dbf')
    49. data = [('John Doe', 31, dbf.Date(1979, 9,13)),('Ethan Furman', 102, dbf.Date(1909, 4, 1)),('Jane Smith', 57, dbf.Date(1954, 7, 2)),('John Adams', 44, dbf.Date(1967, 1, 9)),]
    50. # print(dd.table[2])
    51. # print(type(dd.table[2]))
    52. # print(dd.table[2].name)
    53. # dd.table[2].name = 'sdfsgdgb'
    54. # print(dd.table[2])
    55. # #dd.append_data(data)
    56. # #dd.append_data(data)
    57. # #dd.close()
    58. # #dd.add_fields('tt1 C(30); tt2 N(3,0)')
    59. # dd.close()
    60. for record in dd.table:
    61. print(record)
    62. # for record in dd.table:
    63. # with record as red:
    64. # red[0] = '12133111'
    65. #
    66. # with dd.table[0] as rd:
    67. # rd[0] = 'skjdhfgbshdfhhs'
    68. #
    69. # print(dd.table[0])
    70. # print(getattr(dd.table[0], 'name'))
    71. # with dd.table[0] as rd:
    72. # setattr(rd, 'name', 'eee')
    73. # print(dd.table[0])
    74. # for record in dd.table:
    75. # print(record)
    76. #print(dd.convert_list_dict())
    77. #dd.table.delete_fields('TT1')
    78. #dd.table.pack()
    79. dbf.delete(dd.table[0])
    80. print("================================")
    81. dd.table.pack()
    82. for record in dd.table:
    83. print(record)

    参考:

    官方:dbf · PyPI

    Python Write value in dbf file - Stack Overflow

  • 相关阅读:
    Android 13 - Media框架(11)- MediaCodec(一)
    每日练习------实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。
    主线程调用return和pthread_exit有什么区别?
    延迟摄影渲染工具LRTimelapse 6 为你制作出延时摄影的效果
    【通信工程笔记】【终端与业务-第十二章】市场营销计划、实施和控制
    【C++】set和map的底层结构(AVL树&红黑树)
    2311vim极语言加高亮
    【计算机组成原理】第三章单元测试
    Python进阶:猴子补丁
    vue.js el-tooltip根据文字长度控制是否提示toolTip
  • 原文地址:https://blog.csdn.net/qq_37674086/article/details/125885945
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号