def dump(path, content, method=None, py_prefix='', py_suffix='', text_mode='w'):
if method is None:
method = _infer_method(path)
assert_instance(method, IOMethod)
path_origin = path
if method != IOMethod.TEXT or text_mode == 'w':
path += '.tmp'
if method == IOMethod.PICKLE:
with open(path, 'wb') as f:
pickle.dump(content, f, protocol=pickle.HIGHEST_PROTOCOL)
elif method == IOMethod.PICKLE_GZ:
with gzip.open(path, 'wb') as f:
pickle.dump(content, f, protocol=pickle.HIGHEST_PROTOCOL)
elif method == IOMethod.NUMPY:
joblib.dump(content, path)
elif method == IOMethod.NUMPY_RAW:
with open(path, 'wb') as f:
content.dump(f)
elif method == IOMethod.TEXT:
with open(path, text_mode) as f:
if type(content) in (list, tuple):
f.writelines(content)
else:
f.write(str(content))
elif method == IOMethod.BINARY:
with open(path, 'wb') as f:
f.write(content)
else:
raise ValueError('Unsupported dumping method: {}', method)
if method != IOMethod.TEXT or text_mode == 'w':
os.rename(path, path_origin)
return path_origin
评论列表
文章目录