> **Источник:** https://python-all.ru/3/library/netrc.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `netrc` – обработка файлов netrc

**Исходный код:** [Lib/netrc.py](https://python-all.ru/src/3.14/Lib/netrc.py)

---

Класс [`netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc) анализирует и инкапсулирует формат файлов netrc, используемый программой Unix **ftp** и другими FTP-клиентами.

#### `class netrc.netrc([file])`

Экземпляр `netrc` или экземпляр подкласса инкапсулирует данные из файла netrc. Аргумент инициализации, если указан, задаёт файл для разбора. Если аргумент не указан, будет прочитан файл `.netrc` в домашнем каталоге пользователя – определяемом с помощью [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser). В противном случае будет возбуждено исключение [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError). Ошибки разбора приведут к возбуждению [`NetrcParseError`](https://python-all.ru/3/library/netrc.html#netrc.NetrcParseError) с диагностической информацией, включающей имя файла, номер строки и завершающий токен.

Если аргумент не указан в POSIX-системе, наличие паролей в файле `.netrc` приведёт к возбуждению [`NetrcParseError`](https://python-all.ru/3/library/netrc.html#netrc.NetrcParseError), если права владения или доступа к файлу небезопасны (файл принадлежит пользователю, отличному от запустившего процесс, или доступен для чтения или записи любому другому пользователю). Это реализует поведение безопасности, эквивалентное поведению ftp и других программ, использующих `.netrc`. Такие проверки безопасности недоступны на платформах, не поддерживающих [`os.getuid()`](https://python-all.ru/3/library/os.html#os.getuid).

Изменено в версии 3.4: Добавлена проверка прав POSIX.

Изменено в версии 3.7: [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser) используется для поиска расположения файла `.netrc`, когда *file* не передан в качестве аргумента.

Изменено в версии 3.10: `netrc` пробует кодировку UTF-8 перед использованием кодировки, зависящей от локали. Запись в файле netrc больше не обязана содержать все токены. Значение отсутствующих токенов по умолчанию равно пустой строке. Все токены и их значения теперь могут содержать произвольные символы, такие как пробельные и не-ASCII символы. Если имя входа – anonymous, проверка безопасности не выполняется.

#### `exception netrc.NetrcParseError`

Исключение, возбуждаемое классом [`netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc) при обнаружении синтаксических ошибок в исходном тексте. Экземпляры этого исключения содержат три следующих атрибута:

#### `msg`

Текстовое описание ошибки.

#### `filename`

Имя исходного файла.

#### `lineno`

Номер строки, в которой обнаружена ошибка.

## Объекты netrc

Экземпляр [`netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc) имеет следующие методы:

#### `netrc.authenticators(host)`

Возвращает кортеж из трёх элементов `(login, account, password)` аутентификаторов для *хоста*. Если файл netrc не содержит записи для указанного хоста, возвращает кортеж, связанный с записью 'default'. Если нет ни подходящего хоста, ни записи по умолчанию, возвращает `None`.

#### `netrc.__repr__()`

Выгружает данные класса в виде строки в формате файла netrc. (При этом отбрасываются комментарии и может измениться порядок записей.)

Экземпляры [`netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc) имеют открытые переменные экземпляра:

#### `netrc.hosts`

Словарь, сопоставляющий имена хостов с кортежами `(login, account, password)`. Запись 'default', если присутствует, представлена как псевдохост с этим именем.

#### `netrc.macros`

Словарь, сопоставляющий имена макросов со списками строк.
