gpt4 book ai didi

尝试解压缩时 Python LZMA Corrupt data error

转载 作者:行者123 更新时间:2023-12-04 03:39:42 38 4
gpt4 key购买 nike

response = requests.get('http://content.warframe.com/PublicExport/index_en.txt.lzma')
data = lzma.decompress(response.content)

我得到的错误是:

_lzma.LZMAError: Corrupt input data

我不认为数据已损坏,因为我可以从浏览器下载它并使用 7zip 将其解压缩。我试图在网上找到解决方案,但似乎没有很多关于这个问题的信息。我也尝试过使用不同的方式解压它,但没有成功。 ( Python LZMA : Compressed data ended before the end-of-stream marker was reached )

编辑:这是当前“有效”的解决方案。差不多,砍掉结尾并忽略 EOF 错误。

def fix():
response = requests.get('http://content.warframe.com/PublicExport/index_en.txt.lzma')
data = response.content
byt = bytes(data)
length = len(data)
stay = True
while stay:
stay = False
try:
decompress_lzma(byt[0:length])
except LZMAError:
length -= 1
stay = True

print(decompress_lzma(byt[0:length]))

# FROM: https://stackoverflow.com/a/37400585/15041587
def decompress_lzma(data):
results = []
while True:
decomp = LZMADecompressor(FORMAT_AUTO, None, None)
try:
res = decomp.decompress(data)
except LZMAError:
if results:
break # Leftover data is not a valid LZMA/XZ stream; ignore it.
else:
raise # Error on the first iteration; bail out.
results.append(res)
data = decomp.unused_data
if not data:
break
if not decomp.eof:
raise LZMAError("Compressed data ended before the end-of-stream marker was reached")
return b"".join(results)

最佳答案

我还能够使用 7zip 打开文件。但是在尝试用 xz 解压缩上面链接的文件并看到

之后
$ xz --format=lzma --decompress -t index_en.txt.lzma
xz: index_en.txt.lzma: Compressed data is corrupt

我不完全确定,但我怀疑该文件可能实际上已损坏或以某种方式不标准,即 7zip 能够成功解压缩该文件的方式不正常.

为了进一步支持这一点,如果我通过 xz 创建一个新的 LZMA 文件,例如

xz --format=lzma --compress -k <file>

并尝试用 lzma.open() 解压缩并读取该文件在 Python 中,它可以毫无问题地工作。

关于尝试解压缩时 Python LZMA Corrupt data error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66271285/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com