Я использую приведенный ниже код для чтения в текстовом файле (всегда несколько тысяч строк). Не нужен ли блок кроме Exception as e?

try:
        in_file=open(in_file,'rU')
        try:
            in_content=in_file.readlines()
        except Exception as e:
            sys.stderr.write('Error: %s\n' % e.message)
            sys.exit(1)
        finally:
            in_file.close()
except IOError:
        sys.stderr.write('I/O Error: Input file not found.')
        sys.exit(1)

Также, пожалуйста, расскажите мне об обстоятельствах, при которых метод file.readlines () в Python не сработает?

Slothworks

Ответов: 2

Ответы (2)

Я считаю, что IOError - единственное, что может произойти. Это касается как несуществующего файла, так и неадекватных разрешений. Любая ссылка на Python, которую я видел, содержит только IOError с файлами :). Я не уверен, что вы имеете в виду под трассировкой стека, поскольку кажется, что она просто выводит саму ошибку?

import sys
try:
    with open("in_file",'rU') as in_file:
        in_content=in_file.readlines()
except Exception as e: #Should be replaceable with IOError, doesn't hurt to not 
    sys.stderr.write('%s\n' % e)
    sys.exit(1)

Питонический способ чтения файла выглядит так:

with open(in_file_name,'rU') as in_file:
    in_content = in_file.readlines()

Это должно дать вам все преимущества вашего кода. Так что вам не нужно беспокоиться о том, какие ошибки могут возникнуть. Python позаботится об этом. Файл, открытый с помощью оператора with, будет закрыт в случае исключения.

2022 WebDevInsider