1. ホーム
  2. python

[解決済み] ファイルが存在しない場合は新しいファイルに書き出し、存在する場合はファイルに追加する。

2023-01-22 13:56:09

質問

あるプログラムが、ユーザの highscore をテキストファイルに書き出すプログラムがあります。このファイルの名前は、ユーザが playername .

その特定のユーザ名を持つファイルがすでに存在する場合、プログラムはそのファイルに追加します (そうすれば、1つ以上の highscore ). そして、そのユーザー名を持つファイルが存在しない場合(例えば、そのユーザーが新しい場合)、新しいファイルを作成し、そこに書き込む必要があります。

これが関連する、今のところ動作していないコードです。

try: 
    with open(player): #player is the varible storing the username input
        with open(player, 'a') as highscore:
            highscore.write("Username:", player)

except IOError:
    with open(player + ".txt", 'w') as highscore:
        highscore.write("Username:", player)

上記のコードでは、ファイルが存在しない場合は新規にファイルを作成し、そこに書き込んでいます。存在する場合は、ファイルをチェックしても何も追加されておらず、エラーも発生しません。

どのように解決するのですか?

あなたが興味を持っているハイスコアがどこに保存されているか正確にはわかりませんが、以下のコードはファイルが存在するかどうかをチェックし、必要であればそれに追加するために必要なものであるはずです。私は、"try/except" よりもこの方法を好みます。

import os
player = 'bob'

filename = player+'.txt'

if os.path.exists(filename):
    append_write = 'a' # append if already exists
else:
    append_write = 'w' # make a new file if not

highscore = open(filename,append_write)
highscore.write("Username: " + player + '\n')
highscore.close()