Python int变量持久化问题:如何让col修改后永久保存
解决变量值无法持久化的问题
嘿,这个问题我太熟了——你现在的col是个内存变量,程序一关闭,内存里的所有临时数据都会被清空,所以每次重启程序都会重新把它赋值为6。要让它记住上次更新后的数值,必须把这个值存在程序外部的持久化存储里,给你两个贴合你场景的实用方案:
方案1:用本地文本文件存储col值
这种方式简单直接,不需要依赖外部服务,适合轻量需求:
# 程序启动时先读取保存的col值,没有的话初始化为6 try: with open('col_counter.txt', 'r') as f: col = int(f.read().strip()) except FileNotFoundError: col = 6 first = input("What would you like to do; view, add or edit? ").lower() if first == 'view': print(allcells) if first == 'add': add = input("What would you like to add; pupil or development? ").lower() if add == 'pupil': surname = input("Please input surname ").lower() sheet.update_cell(col, 1, surname) col = col + 1 print(col) # 更新后把新的col值写回文件,确保下次启动能读取到 with open('col_counter.txt', 'w') as f: f.write(str(col))
原理说明:
- 程序启动时先尝试读取
col_counter.txt文件里的数值,如果文件不存在(第一次运行),就把col初始化为6。 - 每次更新
col后,立刻把新值写入文件,这样即使程序关闭,数值也会保存在本地文件里,下次启动就能直接读取。
方案2:用Google Sheet本身存储col值
既然你本来就在操作Google Sheet,不如把col的当前值存在表格的某个固定单元格里(比如第1行第2列,也就是B1单元格),这样数据和你的表格存在一起,更方便管理:
# 程序启动时从Sheet的固定单元格读取col值,没有的话初始化为6 try: saved_col = sheet.cell(1, 2).value col = int(saved_col) if saved_col else 6 except Exception as e: print(f"读取col值失败,使用初始值6: {e}") col = 6 first = input("What would you like to do; view, add or edit? ").lower() if first == 'view': print(allcells) if first == 'add': add = input("What would you like to add; pupil or development? ").lower() if add == 'pupil': surname = input("Please input surname ").lower() sheet.update_cell(col, 1, surname) col = col + 1 print(col) # 更新后把新的col值写回Sheet的固定单元格 sheet.update_cell(1, 2, col)
原理说明:
- 启动时从Sheet的B1单元格读取之前保存的
col值,如果单元格是空的或者读取失败,就用初始值6。 - 每次更新
col后,把新值写回B1单元格,这样即使程序关闭,数值也存在你的Google Sheet里,下次启动就能读取到最新值。
注意事项:
- 如果你用方案1,要确保程序所在的文件夹有读写权限,不然无法创建或修改文件。
- 如果你用方案2,要确保你的Google Sheet服务账号有修改该单元格的权限。
内容的提问来源于stack exchange,提问作者charlie fish
相关产品推荐
相关产品推荐

