由於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 qfichfmab= 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:
# www.cppcns.com將資料放到結果資料庫事務中
txn_3.put(key, value)
count++
if(count % 1000 == 0):
# 將資料寫入資料庫,必須的,否則資料不會寫入到資料庫中
txn_3.commit()
count = 0
txn_3 = en程式設計客棧v_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.clos程式設計客棧e()
merge_lmdb(lmdb1, lmdb2, result_lmdb)
if __name__ == '__main__':
main()
本文標題: 如何用python合併lmdb檔案
本文位址:
python讀取lmdb檔案 LMDB檔案讀取器
函式 tf.lmdbreader lmdbreader 類 繼承自 readerbase 從 lmdb 檔案中輸出記錄的讀取器.有關支援的方法,請參見 readerbase.屬性reader ref 實現讀取器 reader 的操作.supports serialize 讀取器 reader 實現是...
LMDB檔案的python讀取
1.python語法 列表推導式 2.numpy 一些函式 3.matplotlib 一些函式 4.matplotlib 高階函式 5.執行緒 程序 函式 6.cython的使用 7.lmdb的讀取 lmdb檔案可以同時由多個程序開啟,具有極高的資料訪問速度,訪問簡單,不需要執行單獨的資料庫管理程序...
如何用Python計算Softmax?
softmax函式,或稱歸一化指數函式,它能將乙個含任意實數的k維向量z 壓縮 到另乙個k維實向量 sigma 中,使得每乙個元素的範圍都在 0,1 之間,並且所有元素的和為1。該函式的形式通常按下面的式子給出 sigma frac e quad for j 1,k 輸入向量 1,2,3,4,1,2...