如何用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的Flask框架中使用日期和时间的教程
Apr 21 Python
Python3读取zip文件信息的方法
May 22 Python
python实现简单爬虫功能的示例
Oct 24 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
基于python神经卷积网络的人脸识别
May 24 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
python定时任务 sched模块用法实例
Nov 04 Python
TensorFlow固化模型的实现操作
May 26 Python
python时间time模块处理大全
Oct 25 Python
python 实时调取摄像头的示例代码
Nov 25 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
PHP之COOKIE支持详解
2010/09/20 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
python如何修改装饰器中参数
2018/03/20 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Python猴子补丁知识点总结
2020/01/05 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
销售人员个人求职信
2013/09/26 职场文书
公司奖励通知
2015/04/21 职场文书
地心历险记观后感
2015/06/15 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL