我需要在腳本執行之間存儲一個計數器的值,這樣我就可以每隔一百次觸發一個特定的子例程。我知道我可以將我的整數寫入一個文本文件并重新讀取它,我知道我可以 pickle 我的變量達到幾乎相同的效果(腳本當前使用后一種方法)。我所關心的是找到使代碼盡可能優雅(簡單且易于理解)的方法,尤其是對于非技術受眾。模塊名稱在這pickle方面沒有幫助——一旦你理解了這個比喻,它就完全令人難忘,但如果你不知道它,則需要注釋(或口頭解釋)來解釋它是一個用于序列化 Python 對象的模塊到磁盤。雖然“很高興”,但我并不特別關心存儲操作的原子性,也不關心強烈保護存儲的值不丟失 [盡管我確實需要它在服務器重啟后保持不變]。我感興趣的是訪問和更新變量值的代碼的優雅,而不是初始化存儲值的代碼的優雅(因此,如果要將值存儲在文件中,我對代碼感興趣讀取和寫入已經存在并保存值的文件,而不是在第一次執行時創建文件)。存儲單個(數字)值以使其在腳本執行之間持續存在的最優雅(和/或最pythonic)的方法是什么?
3 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
這是一種“寫入文本文件”的方法:
with open('counter', 'r') as f:
value = int(f.read())
# Perform increments to the counter 'value' here
with open('counter', 'w') as f:
f.write(str(value))
這里的優雅損失是需要將變量從 a 轉換為 a str,但很明顯您正在寫入和讀取磁盤上的文件。

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
我的問題中提到的 pickle 方法是:
import pickle
with open('counter', 'rb') as f:
value = pickle.load(f)
# Perform increments to the counter 'value' here
with open('counter', 'wb') as f:
pickle.dump(value, f)
這里失去的優雅是需要知道 pickle 模塊的作用。
添加回答
舉報
0/150
提交
取消