Документация Python неофициальный перевод

ftplib.md

342 строк · 33.7 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.13/library/ftplib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `ftplib` – клиент протокола FTP89**Исходный код:** [Lib/ftplib.py](https://python-all.ru/src/3.13/Lib/ftplib.py)1011---1213Этот модуль определяет класс [`FTP`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP) и несколько связанных элементов. Класс `FTP` реализует клиентскую сторону протокола FTP. Его можно использовать для написания программ на Python, которые выполняют различные автоматизированные задачи FTP, например зеркалирование других FTP-серверов. Он также используется модулем [`urllib.request`](https://python-all.ru/3.13/library/urllib.request.html#module-urllib.request) для обработки URL-адресов, использующих FTP. Дополнительную информацию о FTP (File Transfer Protocol) см. в интернете [**RFC 959**](https://python-all.ru/3.13/library/ftplib.html).1415По умолчанию используется кодировка UTF-8 в соответствии с [**RFC 2640**](https://python-all.ru/3.13/library/ftplib.html).1617[Доступность](https://python-all.ru/3.13/library/intro.html#availability): не WASI.1819Этот модуль не работает или недоступен на WebAssembly. Подробнее см. [платформы WebAssembly](https://python-all.ru/3.13/library/intro.html#wasm-availability).2021Вот пример сеанса с использованием модуля `ftplib`:2223```python24>>> from ftplib import FTP25>>> ftp = FTP('ftp.us.debian.org')  # подключение к хосту, порт по умолчанию26>>> ftp.login()                     # пользователь anonymous, пароль anonymous@27'230 Login successful.'28>>> ftp.cwd('debian')               # перейти в каталог "debian"29'250 Directory successfully changed.'30>>> ftp.retrlines('LIST')           # список содержимого каталога31-rw-rw-r--    1 1176     1176         1063 Jun 15 10:18 README32...33drwxr-sr-x    5 1176     1176         4096 Dec 19  2000 pool34drwxr-sr-x    4 1176     1176         4096 Nov 17  2008 project35drwxr-xr-x    3 1176     1176         4096 Oct 10  2012 tools36'226 Directory send OK.'37>>> with open('README', 'wb') as fp:38>>>     ftp.retrbinary('RETR README', fp.write)39'226 Transfer complete.'40>>> ftp.quit()41'221 Goodbye.'42```4344## Ссылка4546### Объекты FTP4748#### `class ftplib.FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8')`4950Возвращает новый экземпляр класса `FTP`.5152**Параметры:**5354- **host** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Имя хоста для подключения. Если указано, конструктор неявно вызывает `connect(host)`.55- **user** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Имя пользователя для входа (по умолчанию: `'anonymous'`). Если указано, конструктор неявно вызывает `login(host, passwd, acct)`.56- **passwd** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Пароль для входа. Если не указан, и если *passwd* – пустая строка или `"-"`, пароль будет сгенерирован автоматически.57- **acct** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Информация об учётной записи для команды `ACCT` FTP. Немногие системы реализуют это. Подробнее см. [RFC-959](https://python-all.ru/3.13/library/ftplib.html).58- **timeout** ([*float*](https://python-all.ru/3.13/library/functions.html#float) *|* *None*) – Тайм-аут в секундах для блокирующих операций, таких как [`connect()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.connect) (по умолчанию: глобальный тайм-аут по умолчанию).59- **source\_address** ([*tuple*](https://python-all.ru/3.13/library/stdtypes.html#tuple) *|* *None*) – Кортеж из двух элементов `(host, port)` для привязки сокета к своему исходному адресу перед подключением.60- **encoding** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Кодировка для каталогов и имён файлов (по умолчанию: `'utf-8'`).6162Класс `FTP` поддерживает оператор [`with`](https://python-all.ru/3.13/reference/compound_stmts.html#with), например:6364```python65>>> from ftplib import FTP66>>> with FTP("ftp1.at.proftpd.org") as ftp:67...     ftp.login()68...     ftp.dir()69...70'230 Anonymous login ok, restrictions apply.'71dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .72dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..73dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS74dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora75>>>76```7778Изменено в версии 3.2: Добавлена поддержка оператора [`with`](https://python-all.ru/3.13/reference/compound_stmts.html#with).7980Изменено в версии 3.3: добавлен параметр *source\_address*.8182Изменено в версии 3.9: Если параметр *timeout* установлен в ноль, будет возбуждено [`ValueError`](https://python-all.ru/3.13/library/exceptions.html#ValueError) для предотвращения создания неблокирующего сокета. Добавлен параметр *encoding*, а значение по умолчанию изменено с Latin-1 на UTF-8 в соответствии с [**RFC 2640**](https://python-all.ru/3.13/library/ftplib.html).8384Некоторые методы `FTP` доступны в двух вариантах: один для работы с текстовыми файлами, другой для двоичных файлов. Методы названы по имени используемой команды с добавлением `lines` для текстовой версии или `binary` для двоичной.8586Экземпляры `FTP` имеют следующие методы:8788#### `set_debuglevel(level)`8990Устанавливает уровень отладки экземпляра как [`int`](https://python-all.ru/3.13/library/functions.html#int). Это управляет объёмом выводимой отладочной информации. Уровни отладки:9192- `0` (по умолчанию): нет отладочного вывода.93- `1`: Выводит умеренное количество отладочной информации, обычно одну строку на запрос.94- `2` или выше: Выводит максимальное количество отладочной информации, регистрируя каждую строку, отправленную и полученную по управляющему соединению.9596#### `connect(host='', port=0, timeout=None, source_address=None)`9798Подключается к указанному хосту и порту. Эта функция должна вызываться только один раз для каждого экземпляра; её не следует вызывать, если аргумент *host* был указан при создании экземпляра `FTP`. Все остальные методы `FTP` могут быть вызваны только после успешного установления соединения.99100**Параметры:**101102- **host** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Хост для подключения.103- **port** ([*int*](https://python-all.ru/3.13/library/functions.html#int)) – TCP-порт для подключения (по умолчанию: `21`, как указано в спецификации протокола FTP). Редко требуется указывать другой номер порта.104- **timeout** ([*float*](https://python-all.ru/3.13/library/functions.html#float) *|* *None*) – Тайм-аут в секундах для попытки подключения (по умолчанию: глобальная настройка тайм-аута).105- **source\_address** ([*tuple*](https://python-all.ru/3.13/library/stdtypes.html#tuple) *|* *None*) – Кортеж из двух элементов `(host, port)` для привязки сокета к своему исходному адресу перед подключением.106107Вызывает [событие аудита](https://python-all.ru/3.13/library/sys.html#auditing) `ftplib.connect` с аргументами `self`, `host`, `port`.108109Изменено в версии 3.3: добавлен параметр *source\_address*.110111#### `getwelcome()`112113Возвращает приветственное сообщение, отправленное сервером в ответ на начальное подключение. (Это сообщение иногда содержит отказ от ответственности или справочную информацию, которая может быть полезна пользователю.)114115#### `login(user='anonymous', passwd='', acct='')`116117Выполняет вход на подключённый FTP-сервер. Эту функцию следует вызывать только один раз для каждого экземпляра, после установки соединения; её не следует вызывать, если аргументы *host* и *user* были указаны при создании экземпляра `FTP`. Большинство FTP-команд разрешены только после входа клиента в систему.118119**Параметры:**120121- **user** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – имя пользователя для входа (по умолчанию: `'anonymous'`).122- **passwd** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Пароль для входа. Если не указан, и если *passwd* – пустая строка или `"-"`, пароль будет сгенерирован автоматически.123- **acct** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Информация об учётной записи для команды `ACCT` FTP. Немногие системы реализуют это. Подробнее см. [RFC-959](https://python-all.ru/3.13/library/ftplib.html).124125#### `abort()`126127Прерывает текущую передачу файла. Этот метод срабатывает не всегда, но попробовать стоит.128129#### `sendcmd(cmd)`130131Отправляет простую строку команды на сервер и возвращает строку ответа.132133Возбуждает [событие аудита](https://python-all.ru/3.13/library/sys.html#auditing) `ftplib.sendcmd` с аргументами `self`, `cmd`.134135#### `voidcmd(cmd)`136137Отправляет простую строку команды на сервер и обрабатывает ответ. Возвращает строку ответа, если код ответа соответствует успеху (коды в диапазоне 200–299). В противном случае возбуждает [`error_reply`](https://python-all.ru/3.13/library/ftplib.html#ftplib.error_reply).138139Возбуждает [событие аудита](https://python-all.ru/3.13/library/sys.html#auditing) `ftplib.sendcmd` с аргументами `self`, `cmd`.140141#### `retrbinary(cmd, callback, blocksize=8192, rest=None)`142143Загружает файл в двоичном режиме передачи.144145**Параметры:**146147- **cmd** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – подходящая команда `RETR`: `"RETR filename"`.148- **callback** ([callable](https://python-all.ru/3.13/glossary.html#term-callable)) – A single parameter callable that is called for each block of data received, with its single argument being the data as [`bytes`](https://python-all.ru/3.13/library/stdtypes.html#bytes).149- **blocksize** ([*int*](https://python-all.ru/3.13/library/functions.html#int)) – The maximum chunk size to read on the low-level [`socket`](https://python-all.ru/3.13/library/socket.html#socket.socket) object created to do the actual transfer. This also corresponds to the largest size of data that will be passed to *callback*. Defaults to `8192`.150- **rest** ([*int*](https://python-all.ru/3.13/library/functions.html#int)) – команда `REST`, отправляемая серверу. См. документацию к параметру *rest* метода [`transfercmd()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.transfercmd).151152#### `retrlines(cmd, callback=None)`153154Загружает файл или список каталогов в кодировке, указанной параметром *encoding* при инициализации. *cmd* должна быть подходящей командой `RETR` (см. [`retrbinary()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.retrbinary)) или командой вроде `LIST` или `NLST` (обычно просто строка `'LIST'`). `LIST` загружает список файлов и информацию о них. `NLST` загружает список имён файлов. Функция *колбэк* вызывается для каждой строки с аргументом-строкой, содержащей строку без завершающего CRLF. По умолчанию *колбэк* выводит строку в [`sys.stdout`](https://python-all.ru/3.13/library/sys.html#sys.stdout).155156#### `set_pasv(val)`157158Включает «пассивный» режим, если *val* истинно, иначе отключает пассивный режим. Пассивный режим включён по умолчанию.159160#### `storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)`161162Сохраняет файл в двоичном режиме передачи.163164**Параметры:**165166- **cmd** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – подходящая команда `STOR`: `"STOR filename"`.167- **fp** ([file object](https://python-all.ru/3.13/glossary.html#term-file-object)) – файловый объект (открытый в двоичном режиме), который читается до EOF, используя его метод [`read()`](https://python-all.ru/3.13/library/io.html#io.RawIOBase.read) блоками размера *blocksize* для предоставления сохраняемых данных.168- **blocksize** ([*int*](https://python-all.ru/3.13/library/functions.html#int)) – размер блока чтения. По умолчанию `8192`.169- **callback** ([callable](https://python-all.ru/3.13/glossary.html#term-callable)) – A single parameter callable that is called for each block of data sent, with its single argument being the data as [`bytes`](https://python-all.ru/3.13/library/stdtypes.html#bytes).170- **rest** ([*int*](https://python-all.ru/3.13/library/functions.html#int)) – команда `REST`, отправляемая серверу. См. документацию к параметру *rest* метода [`transfercmd()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.transfercmd).171172Изменено в версии 3.2: Добавлен параметр *rest*.173174#### `storlines(cmd, fp, callback=None)`175176Сохраняет файл в строчном режиме. *cmd* должна быть подходящей командой `STOR` (см. [`storbinary()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.storbinary)). Строки читаются до EOF из [файлового объекта](https://python-all.ru/3.13/glossary.html#term-file-object) *fp* (открытого в двоичном режиме) с помощью его метода [`readline()`](https://python-all.ru/3.13/library/io.html#io.IOBase.readline) для получения сохраняемых данных. *колбэк* – необязательный вызываемый объект с одним параметром, вызываемый для каждой строки после её отправки.177178#### `transfercmd(cmd, rest=None)`179180Инициирует передачу по соединению данных. Если передача активная, отправляет команду `EPRT` или `PORT` и команду передачи, указанную в *cmd*, и принимает соединение. Если сервер пассивный, отправляет команду `EPSV` или `PASV`, подключается к нему и запускает команду передачи. В любом случае возвращает сокет соединения.181182Если указан необязательный параметр *rest*, серверу отправляется команда `REST` с аргументом *rest*. Обычно *rest* – это смещение в байтах в запрашиваемом файле, указывающее серверу возобновить отправку байтов файла с указанного смещения, пропуская начальные байты. Однако обратите внимание, что метод `transfercmd()` преобразует *rest* в строку с параметром *encoding*, указанным при инициализации, но содержимое строки не проверяется. Если сервер не распознаёт команду `REST`, будет возбуждено исключение [`error_reply`](https://python-all.ru/3.13/library/ftplib.html#ftplib.error_reply). Если это произошло, просто вызовите `transfercmd()` без аргумента *rest*.183184#### `ntransfercmd(cmd, rest=None)`185186Как и [`transfercmd()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.transfercmd), но возвращает кортеж из соединения данных и ожидаемого размера данных. Если ожидаемый размер не удалось вычислить, в качестве ожидаемого размера возвращается `None`. *cmd* и *rest* имеют тот же смысл, что и в `transfercmd()`.187188#### `mlsd(path='', facts=[])`189190List a directory in a standardized format by using `MLSD` command ([**RFC 3659**](https://python-all.ru/3.13/library/ftplib.html)). If *path* is omitted the current directory is assumed. *facts* is a list of strings representing the type of information desired (e.g. `["type", "size", "perm"]`). Return a generator object yielding a tuple of two elements for every file found in path. First element is the file name, the second one is a dictionary containing facts about the file name. Content of this dictionary might be limited by the *facts* argument but server is not guaranteed to return all requested facts.191192Добавлено в версии 3.3.193194#### `nlst(argument[, ...])`195196Возвращает список имён файлов, возвращаемый командой `NLST`. Необязательный аргумент *argument* – это каталог для вывода списка (по умолчанию текущий каталог сервера). Можно использовать несколько аргументов для передачи нестандартных параметров команде `NLST`.197198> **Примечание**199>200> Если сервер поддерживает команду, [`mlsd()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.mlsd) предоставляет более удобный API.201202#### `dir(argument[, ...])`203204Выводит список каталога, возвращаемый командой `LIST`, печатая его в стандартный вывод. Необязательный аргумент *argument* – это каталог для вывода списка (по умолчанию текущий каталог сервера). Можно использовать несколько аргументов для передачи нестандартных параметров команде `LIST`. Если последний аргумент является функцией, он используется как функция обратного вызова *колбэк*, как в [`retrlines()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.retrlines); по умолчанию вывод производится в [`sys.stdout`](https://python-all.ru/3.13/library/sys.html#sys.stdout). Этот метод возвращает `None`.205206> **Примечание**207>208> Если сервер поддерживает команду, [`mlsd()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.mlsd) предоставляет более удобный API.209210#### `rename(fromname, toname)`211212Переименовывает файл *fromname* на сервере в *toname*.213214#### `delete(filename)`215216Удаляет файл с именем *filename* с сервера. В случае успеха возвращает текст ответа, иначе возбуждает [`error_perm`](https://python-all.ru/3.13/library/ftplib.html#ftplib.error_perm) при ошибках прав доступа или [`error_reply`](https://python-all.ru/3.13/library/ftplib.html#ftplib.error_reply) при других ошибках.217218#### `cwd(pathname)`219220Устанавливает текущий каталог на сервере.221222#### `mkd(pathname)`223224Создаёт новый каталог на сервере.225226#### `pwd()`227228Возвращает путь к текущему каталогу на сервере.229230#### `rmd(dirname)`231232Удаляет каталог с именем *dirname* на сервере.233234#### `size(filename)`235236Запрашивает размер файла с именем *filename* на сервере. В случае успеха размер файла возвращается как целое число, иначе возвращается `None`. Обратите внимание, что команда `SIZE` не стандартизирована, но поддерживается многими распространёнными реализациями серверов.237238#### `quit()`239240Отправляет команду `QUIT` серверу и закрывает соединение. Это «вежливый» способ закрытия соединения, но он может возбудить исключение, если сервер отвечает ошибкой на команду `QUIT`. Это подразумевает вызов метода [`close()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.close), который делает экземпляр `FTP` бесполезным для последующих вызовов (см. ниже).241242#### `close()`243244Односторонне закрывает соединение. Не следует применять к уже закрытому соединению, например, после успешного вызова [`quit()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.quit). После этого вызова экземпляр `FTP` больше не должен использоваться (после вызова `close()` или `quit()` нельзя снова открыть соединение, вызвав метод [`login()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.login)).245246### Объекты FTP\_TLS247248#### `class ftplib.FTP_TLS(host='', user='', passwd='', acct='', *, context=None, timeout=None, source_address=None, encoding='utf-8')`249250Подкласс [`FTP`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP), который добавляет поддержку TLS для FTP, как описано в [**RFC 4217**](https://python-all.ru/3.13/library/ftplib.html). Соединяется с портом 21, неявно защищая управляющее соединение FTP перед аутентификацией.251252> **Примечание**253>254> Пользователь должен явно защитить соединение данных, вызвав метод [`prot_p()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP_TLS.prot_p).255256**Параметры:**257258- **host** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Имя хоста для подключения. Если указано, конструктор неявно вызывает `connect(host)`.259- **user** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Имя пользователя для входа (по умолчанию: `'anonymous'`). Если указано, конструктор неявно вызывает `login(host, passwd, acct)`.260- **passwd** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Пароль для входа. Если не указан, и если *passwd* – пустая строка или `"-"`, пароль будет сгенерирован автоматически.261- **acct** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Информация об учётной записи для команды `ACCT` FTP. Немногие системы реализуют это. Подробнее см. [RFC-959](https://python-all.ru/3.13/library/ftplib.html).262- **context** ([`ssl.SSLContext`](https://python-all.ru/3.13/library/ssl.html#ssl.SSLContext)) – Объект SSL-контекста, который позволяет объединить параметры конфигурации SSL, сертификаты и закрытые ключи в единую, потенциально долгоживущую структуру. Пожалуйста, прочтите [Рекомендации по безопасности](https://python-all.ru/3.13/library/ssl.html#ssl-security) для лучших практик.263- **timeout** ([*float*](https://python-all.ru/3.13/library/functions.html#float) *|* *None*) – Тайм-аут в секундах для блокирующих операций, таких как [`connect()`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP.connect) (по умолчанию: глобальный тайм-аут по умолчанию).264- **source\_address** ([*tuple*](https://python-all.ru/3.13/library/stdtypes.html#tuple) *|* *None*) – Кортеж из двух элементов `(host, port)` для привязки сокета к своему исходному адресу перед подключением.265- **encoding** ([*str*](https://python-all.ru/3.13/library/stdtypes.html#str)) – Кодировка для каталогов и имён файлов (по умолчанию: `'utf-8'`).266267Добавлено в версии 3.2.268269Изменено в версии 3.3: Добавлен параметр *source\_address*.270271Изменено в версии 3.4: Теперь класс поддерживает проверку имени хоста с помощью [`ssl.SSLContext.check_hostname`](https://python-all.ru/3.13/library/ssl.html#ssl.SSLContext.check_hostname) и *Server Name Indication* (см. [`ssl.HAS_SNI`](https://python-all.ru/3.13/library/ssl.html#ssl.HAS_SNI)).272273Изменено в версии 3.9: Если параметр *timeout* установлен в ноль, будет возбуждено [`ValueError`](https://python-all.ru/3.13/library/exceptions.html#ValueError) для предотвращения создания неблокирующего сокета. Добавлен параметр *encoding*, а значение по умолчанию изменено с Latin-1 на UTF-8 в соответствии с [**RFC 2640**](https://python-all.ru/3.13/library/ftplib.html).274275Изменено в версии 3.12: Устаревшие параметры *keyfile* и *certfile* были удалены.276277Вот пример сеанса с использованием класса `FTP_TLS`:278279```python280>>> ftps = FTP_TLS('ftp.pureftpd.org')281>>> ftps.login()282'230 Anonymous user logged in'283>>> ftps.prot_p()284'200 Data protection level set to "private"'285>>> ftps.nlst()286['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp']287```288289Класс `FTP_TLS` наследует от [`FTP`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP), определяя следующие дополнительные методы и атрибуты:290291#### `ssl_version`292293Версия SSL для использования (по умолчанию [`ssl.PROTOCOL_SSLv23`](https://python-all.ru/3.13/library/ssl.html#ssl.PROTOCOL_SSLv23)).294295#### `auth()`296297Устанавливает защищённое управляющее соединение с использованием TLS или SSL, в зависимости от того, что указано в атрибуте [`ssl_version`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP_TLS.ssl_version).298299Изменено в версии 3.4: Теперь метод поддерживает проверку имени хоста с помощью [`ssl.SSLContext.check_hostname`](https://python-all.ru/3.13/library/ssl.html#ssl.SSLContext.check_hostname) и *Server Name Indication* (см. [`ssl.HAS_SNI`](https://python-all.ru/3.13/library/ssl.html#ssl.HAS_SNI)).300301#### `ccc()`302303Возвращает управляющий канал обратно в открытый текст. Это может быть полезно для использования межсетевых экранов, которые умеют обрабатывать NAT с небезопасным FTP без открытия фиксированных портов.304305Добавлено в версии 3.3.306307#### `prot_p()`308309Устанавливает защищённое соединение данных.310311#### `prot_c()`312313Устанавливает незащищённое соединение данных.314315### Переменные модуля316317#### `exception ftplib.error_reply`318319Исключение, возникающее при получении неожиданного ответа от сервера.320321#### `exception ftplib.error_temp`322323Исключение, возникающее при получении кода ошибки, указывающего на временную ошибку (коды ответов в диапазоне 400–499).324325#### `exception ftplib.error_perm`326327Исключение, возникающее при получении кода ошибки, указывающего на постоянную ошибку (коды ответов в диапазоне 500–599).328329#### `exception ftplib.error_proto`330331Исключение, возникающее при получении ответа от сервера, который не соответствует спецификациям ответов протокола передачи файлов (File Transfer Protocol), то есть начинается с цифры в диапазоне 1–5.332333#### `ftplib.all_errors`334335Набор всех исключений (в виде кортежа), которые могут возбуждать методы экземпляров [`FTP`](https://python-all.ru/3.13/library/ftplib.html#ftplib.FTP) в результате проблем с FTP-соединением (в отличие от ошибок программирования со стороны вызывающего кода). В этот набор входят четыре исключения, перечисленные выше, а также [`OSError`](https://python-all.ru/3.13/library/exceptions.html#OSError) и [`EOFError`](https://python-all.ru/3.13/library/exceptions.html#EOFError).336337> **См. также**338>339> **Модуль [`netrc`](https://python-all.ru/3.13/library/netrc.html#module-netrc)**340>341> Синтаксический анализатор для формата файлов `.netrc`. Файл `.netrc` обычно используется FTP-клиентами для загрузки информации аутентификации пользователя перед запросом к пользователю.342