Временные файлы - это все еще файлы;у них есть «указатель» на текущую позицию в файле.Для только что написанного файла указатель находится в конце последней записи, поэтому, если вы write
без seek
ing, вы читаете с конца файла и ничего не получаете.Просто добавьте:
tmp.seek(0)
после write
, и вы поймете, что вы написали в следующем read
/ readlines
.
Если цель состоит только в том, чтобы сделатьданные, видимые для чего-то другого, открывающего файл по имени, например, внешняя программа, такая как nano
в вашем закомментированном коде, вы можете пропустить seek
, но вам нужно убедиться, что данные сброшены из буфера на диск,поэтому в тот же момент после write
вы добавите:
tmp.flush()