Что не так с незамкнутым открытым файлом в Python 3? - PullRequest
0 голосов
/ 20 мая 2019

Допустим, у меня есть следующий код, который пытается распечатать некоторые файлы из списка и использует одну переменную цикла для циклического прохождения каждого файла. После каждой итерации внешнего цикла я теряю ссылку на открытый файл, который я только что распечатал. Хм .. Мне интересно, насколько плох этот код на самом деле ... Я не мог думать ни о каком другом вреде, который он может причинить, кроме нескольких подсчетов, если система определяет максимальное количество открытых файлов .. .etc.

file_names = ["a.txt","b.txt","c.txt"]
for file_name in file_names:
    file = open(file_name)
    for line in file:
        print(line)
    print("\n\n\n")

1 Ответ

0 голосов
/ 20 мая 2019

Вы можете прочитать о неблагоприятных эффектах здесь: Является ли явное закрытие файлов важным?

Вероятно, это будет работать в большинстве случаев, пока не будет;)

Чтобы избежать любых проблем, связанных с нераскрытыми ссылками на файлы, вы должны использовать with open(file_name) as file:, как описано здесь: https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...