У меня есть код, который работал в Python 2.7, но сейчас я пытаюсь выучить Python 3 и конвертировать несколько устаревших скриптов. Я использовал base64.b64decode
для декодирования каждой строки файла, содержащего растровые изображения (по одному на строку), затем StringIO.StringIO
и gzip.GzipFile
для распаковки в виде строки.
Возможно, мне придется пересмотреть весь процесс. Если есть более эффективный способ достичь этого в Python 3, я хочу изучить его, просто укажи мне правильное направление.
Я нашел, где io заменил StringIO
, но когда я использую io.BytesIO
, я получаю ошибки об окончании файловых маркеров. Поочередно io.StringIO
дает мне ошибки о типах ввода, которые еще не str
или None
.
Я пробовал несколько разных способов преобразовать вывод io.BytesIO
обратно в строку, но вместо того, чтобы пытаться охватить каждую ошибку, с которой я столкнулся, скажем так, я застрял.
Legacy Python 2.7 код:
import base64
nowtext= "c:/input_path/"
nowhtml= "c:/output_path/"
with open (nowtext, 'r') as f:
for line in f:
zipped= base64.b64decode(line)
import StringIO
sio= StringIO.StringIO(zipped)
import gzip
u= gzip.GzipFile(fileobj=sio)
unzipped= u.read()
wrapper= """<img src="data:image/bmp;base64,%s" />"""
h= open (nowhtml,'a')
h.write(wrapper % unzipped + '\n')
Попытка конвертации для Python 3
import base64
nowtext= "c:/input_path/"
nowhtml= "c:/output_path/"
with open (nowtext, 'r') as f:
for line in f:
zipped= base64.b64decode(line)
import io
sio= io.BytesIO(zipped)
import gzip
u= gzip.decompress(sio)
unzipped= u.read()
wrapper= """<img src="data:image/bmp;base64,%s" />"""
h= open (nowhtml,'a')
h.write(wrapper % unzipped + '\n')