in oss2/api.py [0:0]
def get_object_to_file(self, key, filename,
byte_range=None,
headers=None,
progress_callback=None,
process=None,
params=None):
"""下载一个文件到本地文件。
:param key: 文件名
:param filename: 本地文件名。要求父目录已经存在,且有写权限。
:param byte_range: 指定下载范围。参见 :ref:`byte_range`
:param headers: HTTP头部
:type headers: 可以是dict,建议是oss2.CaseInsensitiveDict
:param progress_callback: 用户指定的进度回调函数。参考 :ref:`progress_callback`
:param process: oss文件处理,如图像服务等。指定后process,返回的内容为处理后的文件。
:param params: http 请求的查询字符串参数
:type params: dict
:return: 如果文件不存在,则抛出 :class:`NoSuchKey <oss2.exceptions.NoSuchKey>` ;还可能抛出其他异常
"""
logger.debug("Start to get object to file, bucket: {0}, key: {1}, file path: {2}".format(
self.bucket_name, to_string(key), filename))
with open(to_unicode(filename), 'wb') as f:
result = self.get_object(key, byte_range=byte_range, headers=headers, progress_callback=progress_callback,
process=process, params=params)
if result.content_length is None:
shutil.copyfileobj(result, f)
else:
utils.copyfileobj_and_verify(result, f, result.content_length, request_id=result.request_id)
if self.enable_crc and byte_range is None:
if (headers is None) or ('Accept-Encoding' not in headers) or (headers['Accept-Encoding'] != 'gzip'):
utils.check_crc('get', result.client_crc, result.server_crc, result.request_id)
return result