2016-05-29 39 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='') 
相關問題