【发布时间】:2021-04-05 15:30:12
【问题描述】:
我需要解压缩、编辑然后重新压缩一个 Minecraft .dat 文件。然而,在重新压缩后,文件发生了显着变化(我没有进行任何编辑),这使得游戏无法读取。
这是我用来解压的sn-p代码,
import gzip
import shutil
with gzip.open('file_1.dat', 'rb') as f_in:
with open('file_1.txt', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
这是我用来压缩文件的代码:
with open('file_1.txt', 'rb') as f_in2:
with gzip.open('file_1_recmp.dat', 'wb') as f_out2:
shutil.copyfileobj(f_in2, f_out2)
那么,我做错了什么?
【问题讨论】:
-
如果输入不同,输出也会不同。这应该不足为奇。
-
但是输入是一样的(我在重新压缩之前没有编辑文件,我只是解压缩然后再次压缩,看看它是否保持不变)。
-
file_1.dat是如何产生的? -
对不起,如何设置魔术ID?我是使用 gzip 的新手,快速的 Google 搜索并没有产生任何有用的信息。
-
一个问题是您的压缩文件包含一些原始数据没有的额外可选标头。也不必担心文件完全相同,gzip 格式是标准的,但实现不一定 java 可能不同,但它应该没有问题,因为它遵循相同的标准
标签: python compression gzip