【发布时间】:2021-11-03 06:45:56
【问题描述】:
在下面的Python (3.10)程序testCompress.py中,作为测试输入,源代码本身被压缩应用zlib,并应在 Windows 10 上使用 7-zip (20.00 alpha) 解压缩。但它失败了。不接受压缩字节作为存档。输出在程序下方给出。
这是摘录。我真正的问题是,使用 Java java.util.zip.GZIPInputStream 或 ZipInputStream解压缩 Python 压缩文件>。他们还证明字节不是存档。
from tempfile import gettempdir
from zlib import compress
from subprocess import run
filename=r"testCompress.py"
zipname = gettempdir() + r"\zipped.zip"
unzippedname = gettempdir() + r"\unzipped.txt"
unzip = r'"C:\Program Files\7-Zip\7z.exe" x ' + zipname
# zip using zlib
with open(filename,"r") as f:
text = f.read()
b = bytes(text,"ascii")
bcompressed = compress(b)
with open(zipname,"wb") as f:
f.write(bcompressed)
f.close()
# unzip using 7-zip
print("now unzipping on cmd level", unzippedname)
run(unzip, shell=True)
导致输出:
PS C:\Users\ngong\python-workspace> & C:/Users/ngong/AppData/Local/Programs/Python/Python310/python.exe c:/Users/ngong/python-workspace/xslt/testCompress.py
unzipping C:\Users\NGONG\AppData\Local\Temp\unzipped.txt
7-Zip 20.00 alpha (x64) : Copyright (c) 1999-2020 Igor Pavlov : 2020-02-06
Scanning the drive for archives:
1 file, 9041 bytes (9 KiB)
Extracting archive: C:\Users\NGONG\AppData\Local\Temp\zipped.zip
ERROR: C:\Users\NGONG\AppData\Local\Temp\zipped.zip
C:\Users\NGONG\AppData\Local\Temp\zipped.zip
Open ERROR: Can not open the file as [zip] archive
ERRORS:
Is not archive
Can't open as archive: 1
Files: 0
Size: 0
Compressed: 0
PS C:\Users\ngong\python-workspace>
【问题讨论】:
-
抱歉,这个问题问得太快了:我忽略了——显然——gzip 文件需要more 而不仅仅是压缩字节。我应该留下它还是删除它? stackoverflow 最好的习惯是什么?
-
如果您认为错误是其他人将来可能犯的错误,那么这仍然可以作为他们的有用参考。在这种情况下,您应该发布答案并在系统允许时接受(当您被允许接受自己的答案时会有更长的延迟;系统会让您等待 48 小时)。如果这真的只是一个错字(或 think-o),那么我们有一个密切的理由(stackoverflow.com/help/on-topic 的#2)。如果您想在此基础上结束此问题,请在此处的评论中回复我,我可以为您完成。
-
@CodyGray 超级,谢谢!没有人是完美的,尤其是我。当我在 Python 中寻找压缩字符串时,我没有找到 gzip,而只是 zlib。这个错误很可能会在其他人身上重演。