如何用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常用正则表达式符号浅析
Aug 13 Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python实现抢购IPhone手机
Feb 07 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python生成词云的实现代码
Jan 14 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 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脚本数据库功能详解(上)
2006/10/09 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
canvas知识总结
2017/01/25 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python视频按帧截取图片工具
2019/07/23 Python
python 实现屏幕录制示例
2019/12/23 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
升学宴学生答谢词
2015/01/05 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书