Запись в новый файл, если он не существует, и добавление к файлу, если оно
У меня есть программа, которая записывает пользователя highscore
в текстовый файл. Файл назван пользователем, когда они выбирают playername
.
Если файл с указанным именем пользователя уже существует, программа должна быть добавлена в файл (чтобы вы могли видеть более одного 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)
Приведенный выше код создает новый файл, если он не существует и записывается на него. Если он существует, при проверке файла ничего не было добавлено, и я не получаю ошибок.
Ответы
Ответ 1
Мне не ясно, где именно хранится высокий балл, который вам интересен, но приведенный ниже код должен быть тем, что вам нужно, чтобы проверить, существует ли файл и приложить его к нему, если это необходимо. Я предпочитаю этот метод "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()
Ответ 2
Вы пробовали режим "a +"?
with open(filename, 'a+') as f:
f.write(...)
Обратите внимание, что f.tell()
вернет 0 в Python 2.x. Подробнее см. https://bugs.python.org/issue22651.
Ответ 3
Вы можете записать файл в StandardOpenOptions: CREATE и APPEND.
Files.write(Paths.get(""), new byte[] {}, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
- CREATE - если файл не существует, он создает новый, иначе существующий.
- APPEND - добавьте новые данные в существующий контент в файле.
Ответил: fooobar.com/info/379915/...