在Python中保存并覆盖变量

时间:2013-02-12 18:34:46

标签: python variables memory overwrite

我需要一些帮助来覆盖python变量。这是我能给出的最好的例子。如果有人打开我的计划(.exe.py),那么就会出现:

var = 5
var = raw_input("Enter the new variable value: ") ##THE PERSON ENTERS 3
var = 3

现在,用户关闭文件/程序,下次打开文件/程序时,他们希望程序记住var = 3,因此用var = 5覆盖了var = 3。我不知道这是否可能,但如果是的话,你能告诉我吗?

要澄清:我希望我的.py.exe记住变量已更改,并用新的变量覆盖旧变量,因此下次打开文件时,变量为已经改变了。

3 个答案:

答案 0 :(得分:4)

您需要以某种方式存储值,例如存储在文件,数据库或某些服务中。

例如,使用simple file

import io,os
try:
    with io.open('~/.jordan_last_value', 'r', encoding='utf-8') as f:
        var = f.read()
except IOError: # Read failed
    var = raw_input('Enter the new variable value')

    # Save value to disk
    with io.open('~/.jordan_last_value', 'w', encoding='utf-8') as f:
       f.write(var)

print ('Current value is ' + var)

正如您所看到的,这可能有点复杂,因此您可能想要更新file handling的知识。此外,此示例代码只能存储字符串。

如果您希望能够存储更复杂的对象,则首先需要一种方法将它们转换为字节串。请查看jsonpickle模块。

答案 1 :(得分:2)

您可以使用pickle模块,json或其他:P

答案 2 :(得分:0)

使用pickle模块:

import pickle
try: # try to open the file
    with open('jordan_data.pkl', 'r+') as f:
        var = pickle.load(f)
except IOError: # if it doesn't exist, get new input
    var = raw_input("Enter the new variable value: ") # THE PERSON ENTERS 3
    with open('jordan_data.pkl', 'a+') as f: # 'a' will create the file if it doesn't exist
        pickle.dump(var, f) # then, save the file