2012-12-11 170 views
6

我正在編寫一個小程序,可幫助您跟蹤書中的內容。我不喜歡書籤,所以我想:「如果我能創建一個能夠接受用戶輸入的程序,然後顯示他們編寫的文本的數量或字符串,在這種情況下,它們就是頁碼,繼續,並讓他們在需要時改變它?「它只需要幾行代碼,但問題是,如何在下次打開該程序時讓它顯示相同的數字?變量會重置,他們不會?有沒有辦法以這種方式永久改變一個變量?永久更改變量

+1

肯定存儲在一個泡菜文件或數據庫中... –

+0

@JoranBeasley謝謝,但我不知道如何做這兩個。如果你能啓發我,那會很棒! – MalyG

+0

或者只需將該值寫入文本文件,並在程序加載時從文本文件中讀取該值。看看:http://docs.python.org/2/tutorial/inputoutput.html – adchilds

回答

5

您可以將這些值存儲在一個文件中,然後在啓動時加載它們。

的代碼看起來有點像這樣

variable1 = "fi" #start the variable, they can come from the main program instead 
variable2 = 2 

datatowrite = str(variable1) + "\n" + str(variable2) #converts all the variables to string and packs them together broken apart by a new line 

f = file("/file.txt",'w') 
f.write(datatowrite) #Writes the packed variable to the file 
f.close() #Closes the file !IMPORTANT TO DO! 

代碼來讀取數據是:

import string 

f = file("/file.txt",'r') #Opens the file 
data = f.read() #reads the file into data 
if not len(data) > 4: #Checks if anything is in the file, if not creates the variables (doesn't have to be four) 

    variable1 = "fi" 
    variable2 = 2 
else: 
    data = string.split(data,"\n") #Splits up the data in the file with the new line and removes the new line 
    variable1 = data[0] #the first part of the split 
    variable2 = int(data[1]) #Converts second part of strip to the type needed 

請記住這個方法的變量文件存儲在純文本與應用。任何用戶都可以編輯的變量和改變程序的行爲

+1

雖然這不是我實際用來解決我的問題,這是非常有用的,所以對於其他人的看法,我接受這個答案。 – MalyG

1

您需要將其存儲在磁盤上。除非你想要變得很花哨,否則你可以使用像CSV,JSON或YAML這樣的東西來簡化結構化數據。

還檢查了python pickle模塊。

1

變量有幾輩子:

  • 如果他們的代碼塊內,它們的價值只存在於代碼塊。這涵蓋函數,循環和條件。
  • 如果它們位於某個對象的內部,則它們的值僅存在於該對象的整個生命週期中。
  • 如果對象被取消引用,或者您提早離開代碼塊,則變量的值將丟失。

如果你想保持特別的東西的價值,你必須堅持它。 Persistence允許您將變量寫入磁盤(並且是的,數據庫在技術上是磁盤外),並在以後檢索它 - 在變量的生命週期到期後或程序重新啓動時檢索它。

對於如何保持頁面位置,您有幾種選擇 - 嚴格的方法是使用SQLite;一個稍微不笨重的方法將是unpickle這個對象,或者簡單地寫入一個文本文件。