如何用Python合并lmdb文件


Posted in Python onJuly 02, 2018

由于Caffe使用的存储图像的数据库是lmdb,因此有时候需要对lmdb文件进行操作,本文主要讲解如何用Python合并lmdb文件。没有lmdb支持的,需要用pip命令安装。

pip install lmdb

代码及注释如下:

# coding=utf-8
# filename: merge_lmdb.py

import lmdb

# 将两个lmdb文件合并成一个新的lmdb
def merge_lmdb(lmdb1, lmdb2, result_lmdb):

  print 'Merge start!'

  # env代表Environment, txn代表Transaction

  # 打开lmdb文件,读模式
  env_1 = lmdb.open(lmdb1)
  env_2 = lmdb.open(lmdb2)

  # 创建事务
  txn_1 = env_1.begin()
  txn_2 = env_2.begin()

  # 打开数据库
  database_1 = txn_1.cursor()
  database_2 = txn_2.cursor()

  # 打开lmdb文件,写模式,
  env_3 = lmdb.open(result_lmdb, map_size=int(1e12))
  txn_3 = env_3.begin(write=True)

  count = 0
  # 遍历数据库
  for (key, value) in database_1:
    # 将数据放到结果数据库事务中
    txn_3.put(key, value)
    count++
    if(count % 1000 == 0):
      # 将数据写入数据库,必须的,否则数据不会写入到数据库中
      txn_3.commit()
      count = 0
      txn_3 = env_3.begin(write=True)

  if(count % 1000 != 0):
    txn_3.commit()
    count = 0
    txn_3 = env_3.begin(write=True)

  for (key, value) in database_2:
    txn_3.put(key, value)
    if(count % 1000 == 0):
      txn_3.commit()
      count = 0
      txn_3 = env_3.begin(write=True)

  if(count % 1000 != 0):
    txn_3.commit()
    count = 0
    txn_3 = env_3.begin(write=True)

  # 关闭lmdb
  env_1.close()
  env_2.close()
  env_3.close()

  print 'Merge success!'

  # 输出结果lmdb的状态信息,可以看到数据是否合并成功
  print env_3.stat()

def main():
  fr = open('lmdb.txt')
  # lmdb1的目录
  lmdb1 = fr.readline().strip()
  # lmdb2的目录
  lmdb2 = fr.readline().strip()
  # result lmdb的目录
  result_lmdb = fr.readline().strip()
  fr.close()
  merge_lmdb(lmdb1, lmdb2, result_lmdb)

if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的is和==比较两个对象的两种方法
Sep 06 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
python中的闭包函数
Feb 09 Python
python正则实现提取电话功能
Feb 24 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Python 中判断列表是否为空的方法
Nov 24 Python
pytorch中获取模型input/output shape实例
Dec 30 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
重写django的model下的objects模型管理器方式
May 15 Python
Python之qq自动发消息的示例代码
Feb 18 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 #Python
python numpy 显示图像阵列的实例
Jul 02 #Python
Python实现图片拼接的代码
Jul 02 #Python
python远程连接服务器MySQL数据库
Jul 02 #Python
对Python 数组的切片操作详解
Jul 02 #Python
python读取LMDB中图像的方法
Jul 02 #Python
python读写LMDB文件的方法
Jul 02 #Python
You might like
smarty section简介与用法分析
2008/10/03 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
css图片自适应大小
2007/11/28 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
js密码强度检测
2016/01/07 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
拖动时防止选中
2017/02/03 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
python使用tkinter实现简单计算器
2018/01/30 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
django解决跨域请求的问题详解
2019/01/20 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
党员争先创优承诺书
2015/01/20 职场文书
家长会后的感想
2015/08/11 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Python初学者必备的文件读写指南
2021/06/23 Python
Java集成swagger文档组件
2021/06/28 Java/Android
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python