python 3 configparser.read() не вызывает исключение, если задан несуществующий файл

Когда я пытаюсь прочитать несуществующий файл с помощью configparser.read, я думаю, что это должно вызвать исключение. Это не так. Вместо этого он возвращает пустой список. Очевидно, я могу проверить пустой список и вызвать исключение. Мне кажется, что это будет более интуитивно понятным и безопасным, если configparser.read вызовет исключение FileNotFound.

jeffs@jeffs-laptop:~/nbmdt (blue-sky)*$ python3.6
Python 3.6.2 (default, Oct  2 2017, 16:51:32)  [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux 
Type "help", "copyright", "credits" or "license" for more information.
 >>> import configparser
 >>> config=configparser.ConfigParser()
 >>> config.read("xyzzy.xyz")
[]
 >>> config.read("nbmdt.ini")
 ['nbmdt.ini']
 >>>

Спасибо

2 ответа

Как видно из документации, вы можете передать любое количество имен файлов read метод, и он будет молча игнорировать те, которые не могут быть открыты.

Если вы хотите увидеть исключение при невозможности открыть файл, попробуйте read_file метод вместо:

config.read_file(open("xyzzy.xyz", "r"))

Вы правы, а я не прав. Мое решение по проверке длины возвращаемого списка не является плохим решением, и оно будет работать во внешнем случае, когда ни один из файлов не существует, но мой вопрос говорит о том, что я плохо справился с чтением документации.

Другие вопросы по тегам