簡體   English   中英

python 3.x從pickle恢復變量

[英]python 3.x restore variables from pickle

我在泡菜詞典中有幾十個變量。 如果滿足某些條件,則需要還原所有這些變量(所有不同的類型),並使用與字典鍵相同的名稱。

我簡化了代碼以指出問題。 例如,鍵之一是“ ref10_data”。 如果變量在函數中的其他位置定義,則不會被覆蓋,但是我希望它會被覆蓋。

import _pickle as pickle
from numpy import max

def main():
  processing_path = '/data/common/PROBSEV_DATA/processing/'
  ref10_data = 0
  restore_dict = pickle.load(open(processing_path + 'cc_rt_prob_svr.out','rb'))

  for key in restore_dict:
    globals()[key] = restore_dict[key]

  print(max(ref10_data))

if __name__ == '__main__':
  main()

打印的內容是“ 0”。 這種問題/答案的工作方式,但如果先前定義,則不會覆蓋變量。 如何獲得它以重新定義變量,還是有更好的方法來構造此功能? 謝謝。

您可以簡單地將變量作為關鍵字參數(“ kwargs”)傳遞給另一個函數,而不用篡改既笨拙又非蟒蛇的globals

def foo(ref10_data, another_var, yet_another_var):
    print(max(ref10_data))

def main():
    ...
    restore_dict = pickle.load(...)
    foo(**restore_dict)

這是簡單,直觀和Pythonic的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM