A python package to read and edit nbt data
Project description
A python library to read and edit nbt data. Also provides an api to define compound tag schemas in order to save some typing with recurring tag hierarchies. Requires python 3.6.
Installation
The package can be installed with pip.
$ pip install nbtlib
Basic usage
The following examples will give you a very basic overview of what you can do. For more advanced examples, check out the “Usage” notebook in the docs folder.
Reading files
Reading files can be done directly with the load() function. The root property contains the root nbt tag. Every nbt tag inherits from its python counterpart so you can use all the usual builtin operations on nbt tags.
from nbtlib import nbt
nbt_file = nbt.load('bigtest.nbt')
assert nbt_file.root['intTest'] == 2147483647
Editing files
You can use nbt files as context managers in order to save modifications automatically at the end of the with block.
from nbtlib import nbt
from nbtlib.tag import *
with nbt.load('demo.nbt') as demo:
demo.root['counter'] = Int(demo.root['counter'] + 1)
You can also use the save() method.
from nbtlib import nbt
from nbtlib.tag import *
demo = nbt.load('demo.nbt')
demo.root['counter'] = Int(demo.root['counter'] + 1)
demo.save()
For more details check out the “Usage” notebook.
Using schemas
A schema lets you create compound tags that enforce a specific tag type for any given key.
from nbtlib import schema
from nbtlib.tag import *
MySchema = schema('MySchema', {
'foo': String,
'bar': Short
})
my_object = MySchema({'foo': 'hello world', 'bar': 21})
assert isinstance(my_object['foo'], String)
Nbt literals
nbtlib also defines utilities to deal with literal nbt data. For instance, you can parse nbt literals using the parse_nbt() function.
from nbtlib import parse_nbt
from nbtlib.tag import *
my_compound = parse_nbt('{foo:[hello,world],bar:[I;1,2,3]}')
assert my_compound == Compound({
'foo': List[String](['hello', 'world']),
'bar': IntArray([1, 2, 3])
})
Contributing
Contributions are welcome. Unit tests are built with pytest. You can run the test suite with:
$ python -m pytest tests
License: MIT
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.