如何用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删除过期文件的方法
May 29 Python
Python 中的 else详解
Apr 23 Python
Python PyQt5标准对话框用法示例
Aug 23 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
python aiohttp的使用详解
Jun 20 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
python剪切视频与合并视频的实现
Mar 03 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 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中MVC的开发经验分享
2012/05/17 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
Python中关于使用模块的基础知识
2015/05/24 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
品质主管岗位职责
2014/03/16 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书