如何用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之从if开始语句的征程
Sep 14 Python
Python中的ctime()方法使用教程
May 22 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
Django框架安装方法图文详解
Nov 04 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
PyTorch实现AlexNet示例
Jan 14 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
python文件排序的方法总结
Sep 13 Python
python b站视频下载的五种版本
May 27 Python
pycharm无法安装cv2模块问题
May 20 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 preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python实现手机销售管理系统
2019/03/19 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
python跨文件使用全局变量的实现
2020/11/17 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
天游软件面试
2013/11/23 面试题
如何写一个自定义标签
2012/12/28 面试题
英语专业毕业个人求职自荐信
2013/09/21 职场文书
商务日语专业毕业生求职信
2013/10/26 职场文书
优秀老师事迹材料
2014/02/05 职场文书
党风廉政承诺书
2014/03/27 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
鸟的天堂导游词
2015/01/31 职场文书
2015年党小组工作总结
2015/05/26 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL