如何用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入门篇之正则表达式
Oct 20 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python装饰器原理与用法深入详解
Dec 19 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
python 生成正态分布数据,并绘图和解析
Dec 21 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安全性漫谈
2012/06/28 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
jquery tab插件精简版分享
2011/09/10 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
简单了解Python生成器是什么
2019/07/02 Python
pycharm显示远程图片的实现
2019/11/04 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Python使用type动态创建类操作示例
2020/02/29 Python
python模拟实现分发扑克牌
2020/04/22 Python
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
护士辞职信范文
2014/01/19 职场文书
企业党员一句话承诺
2014/05/30 职场文书
四年级数学教学反思
2016/02/16 职场文书
中学教代会开幕词
2016/03/04 职场文书
pandas中关于apply+lambda的应用
2022/02/28 Python
java项目构建Gradle的使用教程
2022/03/24 Java/Android
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技