NBT解析器Minecraft mca文件不是gzip压缩的fi

2024-09-29 01:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用Python从文件系统和.mca region/anvil文件中读取Minecraft世界,使用NBT 1.4.1模块(名为Binary Tag Reader/Writer)读取Minecraft中使用的NBT格式。它对诸如标高.dat,但对区域文件(如r.0.0.mca)抛出一个错误

编辑:我指的是minecraft存储在.minecraft/saves/“MyWorld”/文件夹中的自动生成的world文件。例如level.dat(有效),以及存储在.minecraft/saves/“MyWorld”/区域/文件夹中的mca文件,例如r.0.0.mca,它们不起作用。我从我的一个世界上传了两个样本文件。在

代码:

from nbt import nbt level_file = nbt.NBTFile("level.dat", "rb") # works region_file = nbt.NBTFile("r.0.0.mca", "rb")\

错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/nbt/nbt.py", line 508, in __init__
    self.parse_file()
  File "/usr/local/lib/python3.5/dist-packages/nbt/nbt.py", line 532, in parse_file
    type = TAG_Byte(buffer=self.file)
  File "/usr/local/lib/python3.5/dist-packages/nbt/nbt.py", line 85, in __init__
    self._parse_buffer(buffer)
  File "/usr/local/lib/python3.5/dist-packages/nbt/nbt.py", line 90, in _parse_buffer
    self.value = self.fmt.unpack(buffer.read(self.fmt.size))[0]
  File "/usr/lib/python3.5/gzip.py", line 274, in read
    return self._buffer.read(size)
  File "/usr/lib/python3.5/_compression.py", line 68, in readinto
    data = self.read(len(byte_view))
  File "/usr/lib/python3.5/gzip.py", line 461, in read
    if not self._read_gzip_header():
  File "/usr/lib/python3.5/gzip.py", line 409, in _read_gzip_header
    raise OSError('Not a gzipped file (%r)' % magic)
OSError: Not a gzipped file (b'\x00\x00')

有什么建议吗?在


Tags: 文件inpyselfreadlibusrlocal