如何用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中find()方法的使用
May 18 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
浅谈Python中函数的参数传递
Jun 21 Python
python3.7.0的安装步骤
Aug 27 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
python实现的web监控系统
Apr 27 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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
Protoss建筑一览
2020/03/14 星际争霸
php计算两个文件相对路径的方法
2015/03/14 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
Javascript Objects详解
2014/09/04 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python pandas常用函数详解
2018/02/07 Python
关于Python的一些学习总结
2018/05/25 Python
解决python报错MemoryError的问题
2018/06/26 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
华三通信H3C面试题
2015/05/15 面试题
六个一活动实施方案
2014/03/21 职场文书
活动倡议书范文
2014/05/13 职场文书
师德师风的心得体会
2014/09/02 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript