0

我需要一些关于覆盖 python 变量的帮助。这是我能举出的最好的例子。如果有人打开我的程序(在.exeor中.py)并且这会出现:

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

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

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

4

3 回答 3

4

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

例如,使用一个简单的文件

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)

如您所见,这可能有些复杂,因此您可能需要重新了解文件处理知识。此外,此示例代码可以只存储字符串。

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

于 2013-02-12T18:39:59.240 回答
2

您可以使用pickle模块、json 或其他任何东西:P

于 2013-02-12T18:37:56.797 回答
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
于 2013-02-12T18:57:45.603 回答