2016-11-12 148 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()

相关问题