Python 3.x 读取zip文件的内容而不提取
我正在努力实现的示例: 我的文本文件test1.txt包含以下两行:Python 3.x 读取zip文件的内容而不提取,python-3.x,zip,zipfile,Python 3.x,Zip,Zipfile,我正在努力实现的示例: 我的文本文件test1.txt包含以下两行: John scored 80 in english tim scored 75 in english 我已将此文件压缩为test1.zip,并尝试使用以下代码读取内容: f = 'test1.zip' z = zipfile.ZipFile(f, "r") zinfo = z.namelist() for name in zinfo: with z.open(name) as f1: fi1 = f
John scored 80 in english
tim scored 75 in english
我已将此文件压缩为test1.zip,并尝试使用以下代码读取内容:
f = 'test1.zip'
z = zipfile.ZipFile(f, "r")
zinfo = z.namelist()
for name in zinfo:
with z.open(name) as f1:
fi1 = f1.readlines()
for line in fi1:
print(line)
但我得到的结果是
b'John scored 80 in english\r\n'
b'tim scored 75 in english\r\n'
如何读取此zip文件的内容,该文件应提供与原始文件内容相同的输出,即:
John scored 80 in english
tim scored 75 in english
实际上,您正在读取文件中的内容 /r/n字符是windows中的换行符。问题 更详细地讲,但归根结底,Windows使用/r/n作为其新行 您看到的b'字符与python及其解析文件的方式有关。这个问题很好地回答了为什么会发生这种情况,但引用的文档是: 字节文本总是以“b”或“b”作为前缀;它们产生一个 字节类型而不是str类型的实例。他们可能只是 包含ASCII字符;数值为128或更大的字节 必须用转义来表示 编辑:事实上我发现了一个非常相似的答案,你可以从中提取出来阅读,而不需要额外的字符:。基本的想法是你可以用这个:
items_file = io.TextIOWrapper(items_file, encoding='your-encoding', newline='')
使用这个:printline.decode'ascii'。您得到的是原始输入,而不是printline。