2016-08-12 8 views
-1

私のプログラムは端末からリストに項目を追加できるように設定されていますが、私がこれを行うときはいつでも、myFile.append('hello')はそれを保持しますが、再び'hello'が削除されます。助けてください。ありがとうございました!あなたは.appendではなく、ファイルをリストに追加することができますPythonでリストに項目を追加して保存する方法

with open(myFile, 'a') as f: 
    f.write('hello') 

コード

elif userInput in command: 
    print("Okay, Initializing new command.\n\n") 
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower() 
    if command1 == 'keyword': 
     print('You selected keyword, to exit press enter') 
     command2 = raw_input("Which Keyword would you like to edit? ") 
     if command2 == 'calc': 
      command3 = raw_input("Which Keyword would you like to add? ") 
      calc.append(command3) 
      print(calc) 
+5

あなたのコードを質問に含めてください。これにより、私たちの手助けがさらに簡単になります。 – elethan

+2

すべてのプログラミング言語では、変数(またはリストや辞書など)はすべてプログラムのメモリ内にのみ存在し、プログラムが終了するとクリーンアップされます。あなたが何かを保存したい場合は、それをデータベースやファイル、または他の外部記憶方法に入れなければなりません。 – Cfreak

+0

@Cfreak。現在のディレクトリに保存されているスタートアップファイルもうまくいくかもしれません... –

答えて

3

のようなものを試してみてください。代わりに、上記のように 'a'フラグを使用してmyFileファイルに追加することができます。myFileはファイルパスです。

更新:

既存のコードと何を達成したいに基づいて、これを試してみてください。

... 


elif userInput in command: 
    print("Okay, Initializing new command.\n\n") 
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower() 
    if command1 == 'keyword': 
     print('You selected keyword, to exit press enter') 
     command2 = raw_input("Which Keyword would you like to edit? ") 
     if command2 == 'calc': 
      command3 = raw_input("Which Keyword would you like to add? ") 
      calc = 'path/to/file' 
      with open(calc, 'a+') as f: 
       f.write(command3 + '\n') 
       f.seek(0) #This brings you back to the start of the file, because appending will bring it to the end 
       print(f.readlines()) 

基本的に、あなたはファイルへの書き込み、およびすべての単語のリストを背面に印刷されていますそのファイルに書き込まれます。 'a+'フラグを使用すると、読み書き用のファイルを開くことができます。また、 "リスト"をprint(f.readlines())で印刷するのではなく、変数に代入して、実際のP​​ython listオブジェクトを後で操作することもできます(wordlist = f.readlines())。

さらに、問題の基本的な理解を向上させるために、thisthisをチェックしてください。

アップデート2

以前のコード内のキーワードのPythonのlistを持っている必要がある場合は、追加することができます。

with open('wordlist.txt', 'a+') as f: #wordlist.txt can be changed to be another file name or a path to a file 
    f.seek(0) #opening with `'a+'` because it will create the file if it does not exist, 
       # and seeking because `'a+'` moves to the end of the file 
    calc = f.readlines() 

これはwordlist.txtから単語のリストを読み込むとPythonに保存されますlistcalcと呼ばれます。 calcは実際のPython listオブジェクトですから、calc.append('whatever')を使用できます。その後、あなたのコード、あなたが戻って実際に改行('\n'で区切られた単語を持つ単なるテキストファイルで永続的な「リスト」()へのすべてのキーワードを保存したいとき、あなたが行うことができますで:

with open('wordlist.txt', 'w+') as f: 
    for word in calc: 
     f.write(word) 
    f.seek(0) 
    print(f.readlines()) 

この意志あなたのワードリストファイルを現在calcリストにあるすべての単語で上書きして、すべての値をコンソールに出力してください。

これはあなたのプログラムがどうやって自分自身PythonファイルI/Oの理解を深めてください;これは実際にはあまり複雑ではなく、今後も単純永続データのために役立ちます。また、sugges Codecademyのthis oneのようなPythonチュートリアルを見て、Pythonの仕組みを一般的に理解してください。私はそれを侮辱として意味しません。私は少し前にこのチュートリアルをやりました。それは本当に私がPythonの基礎の良い基盤を作るのを助けました。また、a lesson on file I/Oも含まれています。がんばろう!

+0

とそれを読んで? –

+2

また、OPの質問によれば、この答えが役に立つ前に、より多くの情報をwaaaayに提供しなければならないと思います。 –

+0

私はそれが "間違っていない"ので、これをdownvoteしませんが、私はOPに役立つそのすべてを確信していません。 OPでは、ストレージとメモリの違いを理解するための非常に基本的なチュートリアルが必要です。 – Cfreak

関連する問題