如何用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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
python获取图片颜色信息的方法
Mar 18 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
Django实现网页分页功能
Oct 31 Python
python 协程 gevent原理与用法分析
Nov 22 Python
Python ConfigParser模块的使用示例
Oct 12 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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
数据库的日期格式转换
2006/10/09 PHP
php查看session内容的函数
2008/08/27 PHP
php 高效率写法 推荐
2010/02/21 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php 伪静态之IIS篇
2014/06/02 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
javascript 写类方式之八
2009/07/05 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
python区分不同数据类型的方法
2019/10/14 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
植树节口号
2014/06/21 职场文书
英语系毕业生求职信
2014/07/13 职场文书
警示教育片观后感
2015/06/17 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers