2017-01-23 10 views
0

私はsongdataをリストとして.txtに保存する方法を見つけようとしています。私が使用しているメソッドは、値をどこかに格納しているように見えますが、ファイルに書き込んでいないようです。私もループを挿入しようとしているので、1つだけではなく「曲」を入力し続けることができます。私は以前に授業を利用していませんでした。私はそれについて間違っていて、部品を再フォーマットする必要がありますか?どんなアドバイスも素晴らしいだろう。クラス内でループしてtxtファイルに書き込む

class Song: 
    def __init__(self,song,chart,member): 
     self.song = song 
     self.chart = chart 
     self.member = member 

    def __str__(self): 
     return self.song + " topped the charts at " + str(self.chart)+ " band memebers include " + str(self.member) 
songdata = Song(input("song"),input("chart spot"), input("bandemember")) 

def readstring(f, line): 
    string = line.strip('\r\n') 
    return string 

def writestring(f, string): 
    f.write(string) 


with open("string.txt", "a+", encoding="utf-8") as f: 
    cont = "Y" 
    while cont.upper() == "Y": 
     d = input(songdata) 
     if d != "q": 
      string = " "+d 
      writestring(f, string) 
     else: 
      print("saving.....") 
      break 

    f.seek(0) 
    for line in f: 
     print(readstring(f,line)) 
f.close() 
+0

を' '場合f.write(string) 'はまったく同じ動作をしていますか? Btwは 'f.close()'をしないでください.'with'は自動的にそれを閉じます。 – DyZ

+0

python3.5でコードを実行すると、文字列をfile.Maybeに書き込むことができますか? – Flickerlight

+0

動作しているようですが、txtファイルを開いても何もありません。 – alienmode

答えて

1

ノートのカップル:

  • あなただけがコードd = input(songdata)であなたのユーザーからの情報を要求するとき、inputからプロンプトが常に最初の後に同じものが表示されます一度クラスを初期化するので時間。
  • ファイルに何も書き込まれていない理由は、おそらくd=...の応答がユーザーから空白になっているためです。あなたはクラスを初期化したときに曲の情報を要求しましたが、それをファイルに書き込んだことはありませんでした(代わりにstring=" "+dを書きました)
  • 返信に記載されているとおり、ファイルディスクリプタwrite()を呼び出すだけでファイルに書き込む機能。

私は以下のコード(ファイルパーツへの書き込み)を書き直しました。私はあなたがキーシーケンスqを入力していつでもプログラムを終了できるようにし、それに応じてユーザーがプログラムを終了できるようにしたいと思っていました。あなたは、私は信じている発電機でもっと何か気の利いを作ることができるが、これは問題とは関係ありません。

class Song: 
    """ 
    song class 
    """ 

    def __init__(self, song, chart, member): 
     self.song = song 
     self.chart = chart 
     self.member = member 

    def __str__(self): 
     return (self.song 
       + " topped the charts at " 
       + str(self.chart) 
       + " band memebers include " 
       + str(self.member) 
       + '\n' 
       ) 

def main(): 

    with open("string.txt", "a+", encoding="utf-8") as fd: 

     #Loop until user requests to stop 
     #Key sequence to stop = 'q' 
     while(1): 

      #Get user input 
      prompt = ">>\t" 
      in_song = input("song" + prompt) 
      if (in_song == 'q'): 
       break 

      in_chart_spot = input("chart spot" + prompt) 
      if (in_chart_spot == 'q'): 
       break 

      in_band_mem = input("band members" + prompt) 
      if (in_band_mem == 'q'): 
       break 

      #Create the class 
      song_data = Song(in_song, in_chart_spot, in_band_mem) 

      #Write out the data 
      fd.write(str(song_data)) 

if __name__ == '__main__': 
    main() 

・ホープ、このことができます:)あなたは `WriteStringメソッド(F、文字列)必要な理由

+0

ありがとうございます、あなたの説明は非常に有用です。 – alienmode

関連する問題