Почему «write» не перезаписывает открытый файл при каждом повторении цикла?

#python #python-3.x

#python #python-3.x

Вопрос:

Для следующего кода на Python:

 L = ['vanilla', 6, 'chocola', 7]
txt = 'empty.txt'
f = open(txt,'w')
for item in L:
    f.write(str(item))
f.close()
f = open('empty.txt','r')
print(f.readlines())
f.close()
 

Я запустил его на Python, и было напечатано ‘vanilla6chocola7’
Но разве он не должен печатать только ‘7’?

Разве ‘write’ не перезаписывает все в файле?

Комментарии:

1. Нет, это не так. Открытие файла в режиме записи начинается с начала файла, и каждый write из них продвигает позицию записи.

Ответ №1:

Чтобы стереть содержимое файла, прежде чем записывать в него что-то еще, используйте .truncate(0) before .write(...) .