python解压bz2文件命令,在Python中解压缩.bz2文件
大家好,又见面了,我是你们的朋友全栈君。
So, this is a seemingly simple question, but I’m apparently very very dull. I have a little script that downloads all the .bz2 files from a webpage, but for some reason the decompressing of that file is giving me a MAJOR headache.
I’m quite a Python newbie, so the answer is probably quite obvious, please help me.
In this bit of the script, I already have the file, and I just want to read it out to a variable, then decompress that? Is that right? I’ve tried all sorts of way to do this, I usually get “ValueError: couldn’t find end of stream” error on the last line in this snippet. I’ve tried to open up the zipfile and write it out to a string in a zillion different ways. This is the latest.
openZip = open(zipFile, “r”)
s = ”
while True:
newLine = openZip.readline()
if(len(newLine)==0):
break
s+=newLine
print s
uncompressedData = bz2.decompress(s)
Hi Alex, I should’ve listed all the other methods I’ve tried, as I’ve tried the read() way.
METHOD A:
print ‘decompressing ‘ + filename
fileHandle = open(zipFile)
uncompressedData = ”
while True:
s = fileHandle.read(1024)
if not s:
break
print(‘RAW “%s”‘, s)
uncompressedData += bz2.decompress(s)
uncompressedData += bz2.flush()
newFile = open(steamTF2mapdir + filename.split(“.bz2″)[0],”w”)
newFile.write(uncompressedData)
newFile.close()
I get the error:
uncompressedData += bz2.decompress(s)
ValueError: couldn’t find end of stream
METHOD B
zipFile = steamTF2mapdir + filename
print ‘decompressing ‘ + filename
fileHandle = open(zipFile)
s = fileHandle.read()
uncompressedData = bz2.decompress(s)
Same error :
uncompressedData = bz2.decompress(s)
ValueError: couldn’t find end of stream
Thanks so much for you prompt reply. I’m really banging my head against the wall, feeling inordinately thick for not being able to decompress a simple .bz2 file.
By the by, used 7zip to decompress it manually, to make sure the file isn’t wonky or anything, and it decompresses fine.
解决方案
You’re opening and reading the compressed file as if it was a textfile made up of lines. DON’T! It’s NOT.
uncompressedData = bz2.BZ2File(zipFile).read()
seems to be closer to what you’re angling for.
Edit: the OP has shown a few more things he’s tried (though I don’t see any notes about having tried the best method — the one-liner I recommend above!) but they seem to all have one error in common, and I repeat the key bits from above:
opening … the compressed file as if
it was a textfile … It’s NOT.
open(filename) and even the more explicit open(filename, ‘r’) open, for reading, a text file — a compressed file is a binary file, so in order to read it correctly you must open it with open(filename, ‘rb’). ((my recommended bz2.BZ2File KNOWS it’s dealing with a compressed file, of course, so there’s no need to tell it anything more)).
In Python 2.*, on Unix-y systems (i.e. every system except Windows), you could get away with a sloppy use of open (but in Python 3.* you can’t, as text is Unicode, while binary is bytes — different types).
In Windows (and before then in DOS) it’s always been indispensable to distinguish, as Windows’ text files, for historical reason, are peculiar (use two bytes rather than one to end lines, and, at least in some cases, take a byte worth ‘\0x1A’ as meaning a logical end of file) and so the reading and writing low-level code must compensate.
So I suspect the OP is using Windows and is paying the price for not carefully using the ‘rb’ option (“read binary”) to the open built-in. (though bz2.BZ2File is still simpler, whatever platform you’re using!-).
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138646.html原文链接:https://javaforall.cn
相关文章
- crontab 用法(执行python文件)[通俗易懂]
- Python之文件操作大全
- python处理xps文件_xps/pdf/png/json转换
- python读取txt文件中的json数据
- 用python画圣诞树、樱花树、卡通图案及打包成exe文件[通俗易懂]
- python将py文件编译成exe文件_怎么把python程序打包成可执行文件
- python进入文件目录 命令_python创建目录
- python强制删除文件夹_python删除文件夹下的文件保留但清空子文件夹
- python 遍历文件夹下所有图片
- Python-基础06-文件操作
- python .txt文件读取及数据处理总结
- 如何使用python删除一个文件?
- python秒起https 文件服务器
- python读取文件如何去除空格_python读取txt文件时怎么去掉空格
- python shutil删除_python删除文件
- 推荐!国内气象人开发的基于Python的Grads文件解析利器
- 2022年最新Python大数据之Python基础【八】文件的操作与类
- python 快速读取压缩包内文件
- xsrf form html,python – tornado开启了xsrf_cookies,在ckeditor中上传文件如何传入xsrf_form_html()?…
- python读取txt文件,将文件中第一列显示出来「建议收藏」