如何用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脚本实现格式化css文件
Apr 08 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
python append、extend与insert的区别
Oct 13 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
python SMTP实现发送带附件电子邮件
May 22 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
用Python实现数据的透视表的方法
Nov 16 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
python实现监听键盘
Apr 26 Python
pandas中DataFrame重置索引的几种方法
May 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
electron实现静默打印的示例代码
2019/08/12 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
Android分包MultiDex策略详解
2017/10/30 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python cumsum函数的具体使用
2019/07/29 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
中国文明网签名寄语
2014/01/18 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
大学英语专业求职信
2014/06/21 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis