當我們保存一些數據的中間結果時,往往比較麻煩,這裡寫一個工具函數:
def get_data(mark: str = None, array: np.ndarray = None) -> np.ndarray:
"""用於記錄一些numpy的數據 傳遞一個mark用來標識數據含義,還有一份array的數據 如果mark代表的數據不存在,就保存array到本地文件中 如果mark代表的數據存在,就讀取對應的本地文件並返回 """
assert mark is not None
os.chdir(os.getcwd())
hash_file = hashlib.md5(mark.encode()).hexdigest() + ".pkl"
if os.path.exists(hash_file):
with open(hash_file, 'rb') as file:
array = pickle.load(file)
print('讀取本地文件')
else:
assert array is not None
with open(hash_file, 'wb') as file:
pickle.dump(array, file)
print('保存數據到本地文件')
return array
當我們使用mark
表示一個數據時,會對mark字符串用MD5加密,得到加密後的字符串,然後以此為文件名:
array
到這個文件中import numpy as np
import pickle
import os
import hashlib
def get_data(mark: str = None, array: np.ndarray = None) -> np.ndarray:
"""用於記錄一些numpy的數據 傳遞一個mark用來標識數據含義,還有一份array的數據 如果mark代表的數據不存在,就保存array到本地文件中 如果mark代表的數據存在,就讀取對應的本地文件並返回 """
assert mark is not None
os.chdir(os.getcwd())
hash_file = hashlib.md5(mark.encode()).hexdigest() + ".pkl"
if os.path.exists(hash_file):
with open(hash_file, 'rb') as file:
array = pickle.load(file)
print('讀取本地文件')
else:
assert array is not None
with open(hash_file, 'wb') as file:
pickle.dump(array, file)
print('保存數據到本地文件')
return array
def main():
array = np.array(np.random.random(size=(4, 5, 6, 7)))
hash_value = get_data(mark="數據標識", array=array)
if __name__ == '__main__':
main()