2017-01-14 9 views
2

私はやってPythonを学ぼうとしています。リストに追加すると、プログラムの再起動時に最後の入力が保持されませんか?

以下のコードを目指します:住所、電子メールの追加、連絡担当者などのすべての情報がリスト内で更新されているかどうかを確認する大きなファイルの一部を作成する(リストを使用するかどうかはわかりません、配列または辞書?)。はい、私はそれが顧客などのために様々なことをするためのオプションを提供したい。

以下のコードは基本的に顧客がリストに存在するかどうかをチェックしています。そうでなければ、顧客名をcにリストに追加することになっています。

私はこのプログラムを実行すると動作します。しかし、プログラムを再起動するとすぐに、最後に追加されました。つまり、プログラムの最後の実行でABCが顧客に入った場合、リストには表示されません。

誰かがこれについて正しい方向に私を指摘できますか?また、リスト内の値を複数の辞書に追加して、追加の値、つまり電子メールアドレスなどのキーとして渡すこともできますか?

customer = ['GMS'] 
print ("Enter Customer Name:") 
c = input() 
if c in customer: 
    print ("Customer Exsists") 

else: 
    customer.append(c) 
    print ("Added to list") 
+0

プログラム実行間でデータを保持したい場合は、データをファイルに保存する必要があります。 Pythonと 'pickle'モジュールのファイル操作を確認してください。 –

+0

おかげさまで、「ピクル」は現在の時間を脅かすものです。 :) – Sid

答えて

2

あなたのプログラムは正常に動作します。それは入力を行い、 をリストに追加します。

ただし、プログラム内のすべてのデータは、プログラム が終了するとすぐに消えます。実行中に情報を保持する唯一の方法は、 情報を何らかの種類の永続ストレージに保存することです。 Rok Novoselがコメントに を記載しているので、これはpickleモジュールを使って行うことができますが、 初心者の方は遅くすることをお勧めします。

学習のこの段階では、ファイル の操作:開閉と読み取りと書き込みをお勧めします。単一のリスト のように、writelines()readlines()のファイルメソッドはそれぞれ で保存と復元が最も簡単です。

辞書の質問については、 の顧客名が一意であることを確認しているため、辞書のキーとして使用できます。 を格納すると、データはより複雑になります。 pickleを使用するか、 を入力に解析するファイル構造を作成します。

2

1:データは、1つの実行インスタンス中にmemoryに存在します。プログラムが終了すると、memoryは解放され、データは自動的に別の場所に保存されません。あなたは、データが永続的であるdiskに保存したいフォーマットを使用することができます。あなたの学習のこの瞬間に、ファイルに書き込むだけであなたのために働くことができます。

質問2:はい、辞書を使用できます。

0

ファイルを開き、あなたがリストするやりたいリストに

with open('file', 'r') as f: 
    customers = list(f) 
    f.close() 

をそれを読みます。その後、ファイルに書き込みます。 HDDに顧客を残す。

with open('file', 'w') as f: 
    for l in f: 
     f.write(str(l) + '\n') 
    f.close() 
+0

'f.close()'を 'with 'として呼び出す必要はありません。つまり、コンテキストマネージャが自動的に呼び出します。 –

+0

ポールありがとうございます。それを変更しました。 – zxxz

+0

いいえ、あなたは文字通り閉じる呼び出しを削除できます。どんな害もありませんが、それがなければ正常に動作します。 –

関連する問題