Почему file.read() работает не так, как мне нужно?
У меня есть файл status.txt, в котором записано лишь одно слово, например nothing
Вопрос: почему open('status.txt', 'w+').read() == 'nothing' возвращает false? И как это исправить?
TRXTSSA, в файле точно 'nothing'? Как насчёт перевода строки в конце?
выведи-ка print(repr( open('status.txt', 'rt').read() ))
выведет 'nothing' или 'nothing\n'?
Vindicar, а еще такой вопросик: как мне так сделать, чтобы файл сначала прочитался, а потом полностью перезаписался? Например: хочу прочитать слово из status.txt, а потом перезаписать файл, чтобы там появилось другое слово. Можно использовать 'w+', но тогда при чтении файл станет пустым, соответственно изначальное слово исчезнет. Также пробовал метод 'r+', но тогда другое слово запишется на следующей строчке, а не вместо первого слова
TRXTSSA, нужно закрыть файл и переоткрыть его для записи.
Вообще неправильно делать open().read() - объект файла остаётся на некоторое время в памяти, и программа "держит" файл дольше, чем это нужно. Также, лучше явно указывать ожидаемую кодировку файла (если у тебя там может быть не латиница).
Правильный подход будет примерно таким:
with open('status.txt', 'rt', encoding='utf-8') as src:
word = src.read()
#файл закроется по выходу из with, и его можно будет переоткрыть.
print(word)
new_word = input('Enter new word: ')
with open('status.txt', 'wt', encoding='utf-8') as dst:
dst.write(new_word)