如何用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通过yield实现数组全排列的方法
Mar 18 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
机器学习10大经典算法详解
Dec 07 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
php之可变函数的实例详解
2017/09/13 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
Python 深入理解yield
2008/09/06 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
python实现烟花小程序
2019/01/30 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python如何将函数值赋给变量
2020/04/28 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
浅析Python的命名空间与作用域
2020/11/25 Python
护士自荐信
2013/10/25 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
简单的辞职信模板
2015/05/12 职场文书
在校生证明
2015/06/17 职场文书
CAD实训总结范文
2015/08/03 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技