2013-02-12 98 views
0

我需要一點幫助覆蓋python變量。這是我能給的最好的例子。如果有人打開了我的程序(.exe.py),這是上來:在Python中保存並覆蓋變量

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

現在,用戶關閉文件/程序,接下來他們打開它的時候,他們希望程序記得var = 3 ,因此它用var = 3覆蓋var = 5。我不知道這是否可能,但如果是這樣,你能讓我知道嗎?

要說明:我希望我的.py.exe記住一個變量已更改,並用新的變量覆蓋舊變量,所以下一次他們打開文件時,變量已被更改。

+1

您要使用的文件I/O,並明確寫入和讀取類似設置。首先閱讀一個體面的[初學者的Python教程](http://wiki.python.org/moin/BeginnersGuide/NonProgrammers)。 – 2013-02-12 18:36:58

+1

我建議你在任何你正在關注的python教程中進一步學習。你所要做的就是持久性,在你進入關於持久性的部分之前,你會有一些基本的知識。 – JosefAssad 2013-02-12 18:38:05

+0

@Jordan你想讓程序或其他文件保持改變嗎?如果是第一種情況,程序將不得不改變它自己的文件,我懇求這是可能的,但它需要一些技巧。如果是第二種情況,它是持久性的 – eyquem 2013-02-12 20:24:15

回答

2

您可以使用pickle模塊,JSON或什麼的:P

+2

不是給予人們答案的粉絲,這些答案僅僅是字面上正確的,並且不考慮上下文。在我看來,這裏的背景是提問者錯過了很多編程基礎知識,只會沮喪地跳到使用像醃菜這樣的模塊。提問者的挑戰是教育性的,而不是技術性的。 – JosefAssad 2013-02-12 18:39:48

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模塊。

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 
+0

你不需要'關閉' - with語句已經完成了。另外,您應該以二進制模式打開文件。另外,'pickle'的重命名使得代碼難以理解。 – phihag 2013-02-12 19:08:10