2012-12-11 28 views
6

あなたの書籍のどのページを追跡するのに役立つ小さなプログラムを作成しています。私はブックマークのファンではないので、私は思った "私は、ユーザー入力を取るプログラムを作成し、それらが書かれたテキストの数や文字列を表示する場合はどうだろう、この場合は、必要に応じていつでも変更することができます」それは数行のコードしか必要としませんが、問題は次回プログラムを開いたときに同じ番号を表示するにはどうすればいいのですか?変数はリセットされますか?そうではありませんか?この方法で永続的に変数を変更する方法はありますか?変数を永久に変更する

+1

ピクルファイルまたはデータベースに保存してください... –

+0

@JoranBeasleyありがとうございます。しかし、どちらかをどうするかわかりません。もしあなたが私を啓発することができれば、それは素晴らしいだろう! – MalyG

+0

または、単に値をテキストファイルに書き込んで、プログラムが読み込まれるときにその値をテキストファイルから読み込みます。次のURLをご覧ください: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にするか、単純にテキストファイルに書き込むことになります。

関連する問題