2017-11-21 6 views
1

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') 

任意の提案をどのようにこの作業を取得するには?

+0

こんにちは、スタックオーバーフローを歓迎します!他の人が問題を再現できるように、自己完結型の質問をしてください。具体的には、参照している特定のデータファイルを取得する方法についての情報を提供できますか? – etov

+0

入力していただきありがとうございます。私は意味のあるファイルを指定し、動作中のサンプルファイルとアップロードしていないサンプルファイルをアップロードしてリンクしました。 – Torben545

答えて

0

r.0.0.mcaは圧縮されていません。バイトの約80%はゼロです。

関連する問題