Python library to load DBGZ files
Project description
dbgz
Small utility to read and write data from/to dbgz files
Installation
Install using pip
pip install dbgz
or from source:
pip git+https://github.com/filipinascimento/dbgz.git
Usage
First import dbgz:
import dbgz
Defining a scheme
scheme = [
("anInteger","i"),
("aFloat","f"),
("aString","s"),
("anIntArray","I"),
("aFloatArray","F"),
("anStringArray","S"),
]
Writing some data to a dbgz file
from tqdm.auto import tqdm # Optional, to print progress bar
totalCount = 1000000;
with dbgz.DBGZWriter("test.dbgz",scheme) as fd:
# New entries can be added as:
fd.write(anInteger=1, aString="1")
fd.write(anInteger=2, aString="2", aFloat=5)
fd.write(anInteger=3, aString="3",anIntArray=list(range(10)), aFloatArray=[0.1,0.2,0.3,0.5])
# Here is a loop to write a lot of data:
for index in tqdm(range(totalCount)):
fd.write(
anInteger=index,
aFloat=index*0.01,
anIntArray=list(range(index,index+10)),
aString=str(index),
aFloatArray=[index+0.1,index-0.2,index+0.3,index+0.4],
anStringArray=[str(index),str(index+1),str(index+2),str(index+3)]
)
Reading the dbgz file sequencially:
with dbgz.DBGZReader("test.dbgz") as fd:
print(fd.scheme)
for entry in tqdm(fd.entries,total=fd.entriesCount):
assert entry["anInteger"] == int(entry["aString"])
Manaully reading a dbgz file
with dbgz.DBGZReader("test.dbgz") as fd:
pbar = tqdm(total=fd.entriesCount)
print(fd.scheme)
while True:
entries = fd.read(10)
if(not entries):
break
for entry in entries:
assert entry["anInteger"] == int(entry["aString"])
pbar.update(len(entries))
pbar.refresh()
pbar.close()
Saving dictionary to file and loading it again
with dbgz.DBGZReader("test.dbgz") as fd:
indexDictionary = fd.generateIndex("anInteger",
indicesPath=None,
filterFunction=lambda entry: entry["anInteger"]<10,
useDictionary=True,
showProgressbar = True
)
for key,values in indexDictionary.items():
print(key,values)
for value in values:
assert int(key) == fd.readAt(value)[0]["anInteger"]
Saving dictionary to file and loading it again
with dbgz.DBGZReader("test.dbgz") as fd:
fd.generateIndex("anInteger",
indicesPath="test_byAnInteger.idbgz",
filterFunction=lambda entry: entry["anInteger"]<10,
useDictionary=True,
showProgressbar = True
)
indexDictionary = dbgz.readIndicesDictionary("test_by.idbgz")
for key,values in indexDictionary.items():
print(key,values)
for value in values:
assert int(key) == fd.readAt(value)[0]["anInteger"]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dbgz-0.3.5.tar.gz
(17.2 kB
view details)
File details
Details for the file dbgz-0.3.5.tar.gz.
File metadata
- Download URL: dbgz-0.3.5.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20210108 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c836de27832d1ef8efab0ab8294de3abf07477b8b6a10b65d5da5a1ab33f58a
|
|
| MD5 |
5515fccd890cfb368e494e285ff57846
|
|
| BLAKE2b-256 |
f4efaa7c408f75009282f055a1592c3afbee927616b85c7076eb8c55849b2682
|