Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 读取zip文件的内容而不提取_Python 3.x_Zip_Zipfile - Fatal编程技术网

Python 3.x 读取zip文件的内容而不提取

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

我正在努力实现的示例:

我的文本文件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 = 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