2016-05-29 94 views
2

例子:读zip文件的内容而无需提取的什么,我想实现

我的文本文件(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 
+0

你正在获得原始输入。 – sayan

回答

3

实际上,你正在阅读的究竟是什么在文件中。

/r/n字符是窗口中的换行符。 Difference between \n and \r?这个问题会更详细一点,但是最重要的是Windows使用/ r/n作为新行。

您看到的b'字符与python以及它如何分析文件有关。问题What does the 'b' character do in front of a string literal?做得很好回答到底为什么正在发生,但引用文档:

字节的文字总是以“b”或“B”前缀;他们产生一个 字节类型的实例,而不是str类型。它们可能只有 包含ASCII字符;数值为128或更大的字节 必须用转义表示。

编辑:我实际上找到了一个非常相似的答案,你可以从中读取而不需要额外的字符:py3k: How do you read a file inside a zip file as text, not bytes?。基本的想法是你可以使用这个:

items_file = io.TextIOWrapper(items_file, encoding='your-encoding', newline='') 
相关问题