我编写了以下代码来读取.rar
文件以检查它们是否包含 MDF 文件。
from unrar import rarfile
def is_contain_mdf_file(filepath) -> bool:
try:
if rarfile.is_rarfile(filepath):
obj = rarfile.RarFile(filepath)
members = obj.namelist()
for member in members:
content = obj.read(member)
if content.startswith(b'MDF'):
return True
except Exception as ex:
print("Error while reading archived file %s", filepath, ex)
return False
读取仅包含一个大小为 627MB 的 MDF 文件的 rar 文件时会多次引发以下错误。但是仍然执行检查(如果文件以“MDF”开头)
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 232, in 'calling callback function'
File ".....\python\venv37\lib\site-packages\unrar\rarfile.py", line 110, in _callback
self._data += chunk
MemoryError
为什么我会收到错误,我该如何防止它?系统有足够的内存来处理大文件。
操作系统:Windows 10
Python 3.7 版