如何用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运用于数据分析的简单教程
Mar 27 Python
详解Django中Request对象的相关用法
Jul 17 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
python如何实现DES加密
Sep 21 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
Python中的 enumerate和zip详情
May 30 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
zf框架的Filter过滤器使用示例
2014/03/13 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Angular7.2.7路由使用初体验
2019/03/01 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
django项目中新增app的2种实现方法
2020/04/01 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
就业表自我评价分享
2014/02/06 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
python如何正确使用yield
2021/05/21 Python