zipfile.open
открывает заархивированный файл в двоичном режиме, в котором не удаляются возвраты каретки (т. Е. '\ R'), а также значения по умолчанию для TextIOWrapper
в моем тесте. Попробуйте настроить TextIOWrapper
для использования универсальных символов новой строки (т.е. newline=None
):
import zipfile
import io
zf = zipfile.ZipFile('data/test_zip.zip')
for filename in zf.namelist():
with zf.open(filename, 'r') as f:
words = io.TextIOWrapper(f, newline=None)
for line in words:
print(repr(line))
Выход:
'This is a test line...\n'
'This is a test line...'
Обычное поведение при итерации файла за строкой в Python - сохранение новой строки в конце. Функция print
также добавляет новую строку, поэтому вы получите пустую строку. Чтобы просто напечатать файл, вы можете вместо этого использовать print(words.read())
. Или вы можете использовать опцию end
функции печати: print(line, end='')
.