小巧、开源许可的NBT库(Minecraft)。
项目描述
PyNBT
PyNBT是一个小巧、开源许可(MIT)的NBT库。它支持读取和写入大端或小端NBT文件。在Py3.5-Py3.9、pypy3上经过测试并得到支持。
使用库
在您自己的程序中使用库很简单,并且能够读取、修改和保存NBT文件。
写入
注意:从版本1.1.0开始,对于添加到TAG_Compound中的TAG_*名称是可选的,因为它们将具有与键相同的名称。如果您指定了名称,它将被使用。这将与旧代码不兼容,因为现在已交换了name和value参数的位置。
from pynbt import NBTFile, TAG_Long, TAG_List, TAG_String
value = {
'long_test': TAG_Long(104005),
'list_test': TAG_List(TAG_String, [
'Timmy',
'Billy',
'Sally'
])
}
nbt = NBTFile(value=value)
with open('out.nbt', 'wb') as io:
nbt.save(io)
读取
读取很简单,将接受任何提供read()的文件对象。只需简单地将写入示例中创建的文件进行美化打印即可
from pynbt import NBTFile
with open('out.nbt', 'rb') as io:
nbt = NBTFile(io)
print(nbt.pretty())
这将产生以下输出
TAG_Compound(''): 2 entries
{
TAG_Long('long_test'): 104005
TAG_List('list_test'): 3 entries
{
TAG_String(None): 'Timmy'
TAG_String(None): 'Billy'
TAG_String(None): 'Sally'
}
}
每个标签至少暴露两个字段,.name和.value。每个标签的值映射到Python的普通类型,如TAG_Compound的dict()和TAG_List的list()。每个标签还提供了完整的__repr__方法用于打印。这使得遍历非常简单,对于现有的Python开发者来说很熟悉。
with open('out.nbt', 'rb') as io:
nbt = NBTFile(io)
# Iterate over every TAG in the root compound as you would any other dict
for name, tag in nbt.items():
print(name, tag)
# Print every tag in a list
for tag in nbt['list_test']:
print(tag)
变更日志
这些变更日志仅是摘要,并不全面。请参阅标签之间的提交历史记录以获取完整更改。
v3.0.0
- TAG_Byte_Array现在返回和接受bytearray(),而不是字节数组列表(#18)。
v2.0.0
- 不再支持Py2。
v1.4.0
- 删除了口袋检测辅助工具和RegionFile,使PyNBT 仅处理NBT。
- 添加了一个简单的unicode测试。
v1.3.0
- 在nbt.py中进行内部清理,以简化一些C工作。
NBTFile.__init__()
和NBTFile.save()
的参数已更改。在大多数情况下,将compressed=True
更改为NBTFIle.Compression.GZIP
就足够了。NBTFile.__init__()
和NBTFile.save()
现在不再接受路径,而是分别只接受实现read()
和write()
的文件对象。- 现在必须在构造函数或保存
NBTFile()
之前提供name
(默认为None
而不是 '')。
v1.2.
- (TAG_List) 的值不再需要是
TAG_*
对象。在保存标签时将进行转换。这允许更容易地使用原生类型的列表。
v1.2.0
- 内部代码清理。与 pocket 加载和保存(将作为助手重新实现)不兼容。
- 轻微的速度提升。
- (TAG_List) 现在可以被视为普通的 Python 列表(
.value
指向self
)。
v1.1.0
- 与旧代码不兼容,但允许更方便地创建
TAG_Compound
。在大多数情况下,name
和value
的位置已交换。 name
现在是每个TAG_*
的最后一个参数,对于TAG_Compound
的子对象是可选的。相反,它们将作为分配给它们的键作为名称。- (TAG_Compound) 现在可以像字典一样处理,以便于使用。
.value
简单映射到自身。
v1.0.1
- 小错误修复。
- 添加了对
TAG_Int_Array
的支持。
v1.0.0
- 第一个版本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。
源代码分发
PyNBT-3.1.0.tar.gz (6.9 kB 查看哈希值)
构建分发
PyNBT-3.1.0-py3-none-any.whl (7.3 kB 查看哈希值)