2017-02-04 6 views
0

私はパイゲームでゲームを作っており、ハイスコアを保存します。コードを終了して再実行するたびに、スコアは決してファイルに保存されません。私は考えられる問題に目を向け、手作業で閉じようと試みていませんでした。誰もが、私はそれをはるかに高く評価されるだろう下のコードから行っているかもしれないものを知っている場合。.txtファイルを書き込むことはありません。

#This opens the file and sets the score as self.highscore 
HS_FILE = "highscore.txt" 
self.dir = path.dirname(__file__) 
with open(path.join(self.dir, HS_FILE), 'w') as f: 
    try: 
     self.highscore = int(f.read()) 
    except: 
     self.highscore = 0 
#This is elsewhere in the code but the code around it runs fine 
#self.score is created elsewhere 
if self.score > self.highscore: 
    self.highscore = self.score 
    with open(path.join(self.dir, HS_FILE), 'w') as f: 
     f.write(str(self.score)) 
#for the purpose of confusion I will just print out the score to the command line 
print(str(self.highscore)) 
+0

'' r "'( "read"のように)使う必要がありますが、ファイルを消去する '" w "'を使うべきです。 – furas

+0

BTW: 'print(str(self.highscore))'と 'f.write(str(self.score))'で 'str()'を使う必要はありません。自動的に文字列に変換されます。 – furas

答えて

2
with open(path.join(self.dir, HS_FILE), 'w') as f: 

あなたが書き込みでファイルを開いている(覚えておいて、私は他の場所コードでスコアを定義しています)モード( 'w')を入力し、それから読み込もうとすると動作しません。あなたはすべてをキャッチ除く句を使用しましたので、あなたは次のようになり、エラーを見ていない:

さらに
io.UnsupportedOperation: not readable 

、あなたはステートメントを使用して使用しているので、ファイルを書き込みモードでオープンされコメントがすでに消されていることを指摘しているように、再び閉じます。読み取りモード( 'r')を使用してファイルを開き、そのファイルが修正されているかどうかを確認します。

関連する問題