如何用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解释器理解Python中的字节码
Apr 01 Python
深入理解Python变量与常量
Jun 02 Python
Python编写一个闹钟功能
Jul 11 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
python实现词法分析器
Jan 31 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
Python中的引用和拷贝实例解析
Nov 14 Python
Python类反射机制使用实例解析
Dec 30 Python
Python小白垃圾回收机制入门
Jun 09 Python
浅析Python 字符编码与文件处理
Sep 24 Python
Python try except finally资源回收的实现
Jan 25 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
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python批量修改ssh密码的实现
2019/08/08 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
房屋改造计划书
2014/01/10 职场文书
爱心捐款倡议书
2014/04/14 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫