Итак, это, казалось бы, простой вопрос, но я, очевидно, очень и очень скучный. У меня есть небольшой скрипт, который загружает все файлы .bz2 с веб-страницы, но по какой-то причине распаковка этого файла вызывает у меня ОСНОВНУЮ головную боль.
Я довольно новичок в Python, поэтому ответ, вероятно, вполне очевиден, пожалуйста, помогите мне.
В этом фрагменте сценария у меня уже есть файл, и я просто хочу прочитать его в переменной, а затем распаковать его? Это правильно? Я пробовал все виды способов сделать это, я обычно получаю сообщение об ошибке «ValueError: не удалось найти конец потока» в последней строке этого фрагмента. Я попытался открыть zip-файл и записать его в строку разными способами. Это самое последнее.
openZip = open(zipFile, "r")
s = ''
while True:
newLine = openZip.readline()
if(len(newLine)==0):
break
s+=newLine
print s
uncompressedData = bz2.decompress(s)
Привет, Алекс, мне следовало перечислить все другие методы, которые я пробовал, так как я пробовал метод read ().
МЕТОД 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()
Я получаю ошибку:
uncompressedData += bz2.decompress(s)
ValueError: couldn't find end of stream
МЕТОД B
zipFile = steamTF2mapdir + filename
print 'decompressing ' + filename
fileHandle = open(zipFile)
s = fileHandle.read()
uncompressedData = bz2.decompress(s)
Та же ошибка:
uncompressedData = bz2.decompress(s)
ValueError: couldn't find end of stream
Большое спасибо за быстрый ответ. Я действительно бьюсь головой о стену, чувствуя себя чрезмерно толстым из-за того, что не могу распаковать простой файл .bz2.
Кстати, 7zip использовал его для распаковки вручную, чтобы убедиться, что файл не шаткий или что-то в этом роде, и он прекрасно распаковывается.