如何用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实现二分法算法实例
Feb 02 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
利用Python开发实现简单的记事本
Nov 15 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Django admin美化插件suit使用示例
Dec 12 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python 递归相关知识总结
Mar 03 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
处理php自动反斜杠的函数代码
2010/01/05 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
JavaScript中的类继承
2010/11/25 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
英语复习计划
2015/01/19 职场文书
React配置子路由的实现
2021/06/03 Javascript
python基础之//、/与%的区别详解
2022/06/10 Python