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

---

# 37.1. [`ic`](https://python-all.ru/2.7/library/ic.html#module-ic) – Доступ к Internet Config в Mac OS X

Этот модуль предоставляет доступ к различным интернет-настройкам, задаваемым через **Системные настройки** или **Finder**.

> **Примечание**
>
> Этот модуль был удалён в Python 3.x.

Существует низкоуровневый сопутствующий модуль `icglue`, который предоставляет базовую функциональность доступа к Internet Config. Этот низкоуровневый модуль не документирован, но строки документации (docstrings) процедур описывают параметры, а имена процедур совпадают с именами в Pascal или C API к Internet Config, поэтому если нужен этот модуль, можно использовать стандартную документацию программистов IC.

Модуль [`ic`](https://python-all.ru/2.7/library/ic.html#module-ic) определяет исключение [`error`](https://python-all.ru/2.7/library/ic.html#ic.error) и символьные имена для всех кодов ошибок, которые может генерировать Internet Config; подробности см. в исходном коде.

#### `exception ic.error`

Исключение, возбуждаемое при ошибках в модуле [`ic`](https://python-all.ru/2.7/library/ic.html#module-ic).

Модуль [`ic`](https://python-all.ru/2.7/library/ic.html#module-ic) определяет следующий класс и функцию:

#### `class ic.IC([signature[, ic]])`

Создаёт объект Internet Config. Параметр signature – это 4-символьный код создателя текущего приложения (по умолчанию `'Pyth'`), который может влиять на некоторые настройки IC. Необязательный аргумент *ic* – это заранее созданный низкоуровневый `icglue.icinstance`; это может быть полезно, если нужно получить настройки из другого конфигурационного файла и т.д.

#### `ic.launchurl(url[, hint])`

#### `ic.parseurl(data[, start[, end[, hint]]])`

#### `ic.mapfile(file)`

#### `ic.maptypecreator(type, creator[, filename])`

#### `ic.settypecreator(file)`

Эти функции являются «ярлыками» к одноимённым методам, описанным ниже.

## 37.1.1. Объекты IC

Объекты [`IC`](https://python-all.ru/2.7/library/ic.html#ic.IC) имеют интерфейс отображения (mapping), поэтому для получения почтового адреса достаточно обратиться к `ic['MailAddress']`. Присваивание также работает и изменяет соответствующий параметр в конфигурационном файле.

Модуль знает о различных типах данных и преобразует внутреннее представление IC в «логическую» структуру данных Python. Запуск модуля [`ic`](https://python-all.ru/2.7/library/ic.html#module-ic) как самостоятельной программы запустит тестовую программу, которая перечислит все ключи и значения в вашей базе данных IC – это можно использовать в качестве документации.

Если модуль не знает, как представить данные, он возвращает экземпляр типа `ICOpaqueData` с необработанными данными в атрибуте `data`. Объекты этого типа также допустимы в качестве значений для присваивания.

Помимо интерфейса словаря, объекты [`IC`](https://python-all.ru/2.7/library/ic.html#ic.IC) имеют следующие методы:

#### `IC.launchurl(url[, hint])`

Разбирает указанный URL, запускает соответствующее приложение и передаёт ему URL. Необязательный параметр *hint* может быть именем схемы, например `'mailto:'`; в этом случае неполные URL дополняются этой схемой. Если *hint* не указан, неполные URL считаются недопустимыми.

#### `IC.parseurl(data[, start[, end[, hint]]])`

Находит URL где-то в *data* и возвращает начальную позицию, конечную позицию и URL. Необязательные параметры *start* и *end* можно использовать для ограничения поиска; например, если пользователь щёлкает в длинном текстовом поле, можно передать всё текстовое поле и позицию щелчка в *start*, и эта процедура вернёт полный URL, на который щёлкнул пользователь. Как и выше, *hint* – необязательная схема для дополнения неполных URL.

#### `IC.mapfile(file)`

Возвращает запись отображения для указанного *file*, который может быть передан как имя файла или результат `FSSpec()`; файл не обязан существовать.

Запись отображения возвращается в виде кортежа `(version, type, creator, postcreator, flags, extension, appname, postappname, mimetype, entryname)`, где *version* – номер версии записи, *type* – 4-символьный тип файла, *creator* – 4-символьный тип создателя, *postcreator* – 4-символьный код создателя необязательного приложения для постобработки файла после загрузки, *flags* – различные биты, определяющие, передавать в двоичном или текстовом виде и т.п., *extension* – расширение имени файла для этого типа, *appname* – читаемое имя приложения, которому принадлежит файл, *postappname* – имя приложения для постобработки, *mimetype* – MIME-тип этого файла и *entryname* – имя этой записи.

#### `IC.maptypecreator(type, creator[, filename])`

Возвращает запись отображения для файлов с заданными 4-символьными кодами *type* и *creator*. Необязательный параметр *filename* может быть указан для дополнительного уточнения правильной записи (например, если код создателя равен `'????'`).

Запись отображения возвращается в том же формате, что и для *mapfile*.

#### `IC.settypecreator(file)`

Для существующего *file*, указанного как имя файла или результат `FSSpec()`, устанавливает его создателя и тип на основе расширения. Finder уведомляется об изменении, поэтому значок Finder обновится быстро.
