如何用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 pass 语句使用示例
Mar 11 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
python利用正则表达式提取字符串
Dec 08 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
python编程实现归并排序
Apr 14 Python
Python 操作MySQL详解及实例
Apr 30 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
基于python实现把图片转换成素描
Nov 13 Python
python json load json 数据后出现乱序的解决方案
Feb 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 curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
如何在PHP中读写文件
2020/09/07 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python创建进程fork用法
2015/06/04 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
python 日期排序的实例代码
2019/07/11 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
用Python实现职工信息管理系统
2020/12/30 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
国际会议邀请函范文
2014/01/16 职场文书
自荐信格式简述
2014/01/25 职场文书
采购部部长岗位职责
2014/02/06 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
加薪申请报告范本
2015/05/15 职场文书
家长会主持词开场白
2015/05/29 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android