2016-11-12 187 views
-1

我試圖讓Python中一個簡單的壓縮程序,但我收到此錯誤是什麼導致這個錯誤,我該如何解決它?

with open("admin.dll", "r").read() as text: 
AttributeError: __exit__  

爲什麼會出現這個錯誤?這是我的全部代碼

import zlib, sys, time, base64 
with open("admin.txt", "r").read() as file: 
    print("Uncompressed: " + str(sys.getsizeof(file))) 
    compressed = zlib.compress(file, 9) 
    print("Compressed: ", end="") 
    print(sys.getsizeof(compressed)) 

回答

4

你問Python來當作上下文經理表達open("admin.dll", "r").read()(串)的結果。上下文管理器預計有一個__exit__方法,但字符串沒有這些方法。

你通常通過在文件對象

with open("admin.dll", "r") as fileobj: 
    text = fileobj.read() 

文件對象有需要的上下文管理方法。

請注意,您也有其他錯誤; sys.getsizeof產生一個Python對象的內存大小,而不是文件的大小。您可以使用os.stat(),或者查找文件末尾並使用fileobj.tell()來獲取大小。要獲得壓縮結果的大小,請使用len()

-1

我相信你應該打開這個文件。爲它指定一個變量。在你的案例文件中。 然後在下一行,您可以通過調用f.read()

相關問題