我正在尝试在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))
答案 0 :(得分: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 :(得分:-1)
我相信你应该打开文件。为它指定一个变量。在你的案例文件中。 然后在下一行,您可以通过调用f.read()
来读取该文件