如何用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定时检查某个进程是否已经关闭的方法
May 20 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
python集合能干吗
Jul 19 Python
如何用python批量调整视频声音
Dec 22 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数组实例总结与说明
2011/08/23 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
解析php中curl_multi的应用
2013/07/17 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
js实现简单页面全屏
2019/09/17 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Flask框架钩子函数功能与用法分析
2019/08/02 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
python实现三种随机请求头方式
2021/01/05 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
个人素质的自我评价分享
2013/12/16 职场文书
应聘面试自我评价
2014/01/24 职场文书
出纳岗位职责
2015/01/31 职场文书
学生检讨书怎么写
2015/05/07 职场文书
复兴之路观后感
2015/06/02 职场文书
高中团支书竞选稿
2015/11/21 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
js不常见操作运算符总结
2021/11/20 Javascript
Python实现视频自动打码的示例代码
2022/04/08 Python