NBT 1.4.1モジュール(名前付きバイナリタグリーダー/ライター)を使用して、ファイルシステムと.mcaリージョン/アンビルファイルからPythonを使用してMinecraftワールドを読み込もうとしています。 Minecraftで使われているNBT形式を読んでください。 level.datなどのファイルは正常に動作しますが、r.0.0.mcaなどの地域ファイルにはエラーがスローされます。NBT Parser Minecraft mcaファイルがgzippedファイルエラーではない
編集:ミニクラフトが.minecraft/savesに保存する自動生成された世界ファイルを参照しています。/"MyWorld" /フォルダー。 level.dat(これは動作します)や、動作しないr.0.0.mcaなどの.minecraft/saves/"MyWorld"/region /フォルダに格納されているmcaファイルなどです。私は私の世界の一つから2つのサンプルファイルをアップロードしました。
コード:
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')
任意の提案をどのようにこの作業を取得するには?
こんにちは、スタックオーバーフローを歓迎します!他の人が問題を再現できるように、自己完結型の質問をしてください。具体的には、参照している特定のデータファイルを取得する方法についての情報を提供できますか? – etov
入力していただきありがとうございます。私は意味のあるファイルを指定し、動作中のサンプルファイルとアップロードしていないサンプルファイルをアップロードしてリンクしました。 – Torben545