Python я должен закрыть файл после прочтения - PullRequest
0 голосов
/ 13 мая 2018

Я использую Django 1.10 и Python 3.5.3

В одном из представлений пользователь отправляет файл, а я читаю его так:

    def create(self, request, *args, **kwargs):
        file_serializer = self.get_serializer(data=request.data)
        file_serializer.is_valid(raise_exception=True)
        if file_serializer.is_valid():
            if 'file' in request.data:

                # hash file
                hasher = hashlib.md5()
                read_file = request.data['file'].read()
                hasher.update(read_file)
                current_file_hash = hasher.hexdigest()

У меня вопрос - я должен закрыть файл после этого? Похоже, я на самом деле не открываю его.

1 Ответ

0 голосов
/ 13 мая 2018

Из того, что я могу сказать, request.data['file'] на самом деле является дескриптором открытого файла, а не именем файла.Если вы знаете, что request позаботится об очистке своих собственных ресурсов, очевидно, нет необходимости явно закрывать файл.В противном случае закройте его с помощью request.data['file'].close().В этом случае лучше всего обернуть все тело функции в try / finally -блок, чтобы гарантировать, что файл будет закрыт независимо от того, что:

try:
    # read from file etc.
finally:
    request.data['file'].close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...