Согласно документации для readline , она возвращает пустую строку тогда и только тогда, когда вы находитесь в конце файла. Закрыто не то же самое, что конец файла. Файловый объект будет закрыт только при вызове .close (). Когда ваш код достигает конца файла, readline () продолжает возвращать пустую строку.
Если вы просто используете объект файла в качестве итератора, Python будет автоматически читать строку за раз и останавливаться в конце файла. Как это:
fetchlistfile = file("tofetch", "r")
for nextfetch in fetchlistfile:
print nextfetch
Команда echo "test" > tofetch
открывает именованный канал, записывает в него «тест» и закрывает его конец канала. Поскольку конец записи канала закрыт, конец чтения видит конец файла.