ftplib — Клиент протокола FTP
Исходный код: Lib/ftplib.py
В этом модуле определен класс FTP и несколько связанных элементов. Класс FTP реализует клиентскую часть протокола FTP. Его можно использовать для написания программ на Python, выполняющих различные автоматизированные задачи FTP, такие как зеркалирование других FTP-серверов. Он также используется модулем urllib.request для обработки URL, использующих FTP. Дополнительную информацию о протоколе FTP (File Transfer Protocol) можно найти в интернет-документе RFC 959.
По умолчанию используется кодировка UTF-8, следуя RFC 2640.
Доступность: не WASI.
Этот модуль не работает и недоступен в WebAssembly. Дополнительную информацию см. в платформах WebAssembly.
Вот пример сеанса, использующего модуль ftplib:
>>> from ftplib import FTP
>>> ftp = FTP('ftp.us.debian.org') # connect to host, default port
>>> ftp.login() # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd('debian') # change into "debian" directory
'250 Directory successfully changed.'
>>> ftp.retrlines('LIST') # list directory contents
-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README
...
drwxr-sr-x 5 1176 1176 4096 Dec 19 2000 pool
drwxr-sr-x 4 1176 1176 4096 Nov 17 2008 project
drwxr-xr-x 3 1176 1176 4096 Oct 10 2012 tools
'226 Directory send OK.'
>>> with open('README', 'wb') as fp:
>>> ftp.retrbinary('RETR README', fp.write)
'226 Transfer complete.'
>>> ftp.quit()
'221 Goodbye.'
Ссылка
Объекты FTP
-
class ftplib.FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8') -
Возвращает новый экземпляр класса
FTP.- Параметры:
-
-
host (строка) – Имя хоста для подключения. Если задано,
connect(host)неявно вызывается конструктором. -
user (строка) – Имя пользователя для входа (по умолчанию:
'anonymous'). Если задано,login(host, passwd, acct)неявно вызывается конструктором. -
passwd (строка) – Пароль для входа. Если не задан, и если passwd пустая строка или
"-", пароль будет сгенерирован автоматически. -
acct (строка) – Данные учетной записи, используемые для команды
ACCTFTP. Несколько систем поддерживают эту команду. Подробнее см. RFC-959. -
timeout (число с плавающей точкой | None) – Таймаут в секундах для блокирующих операций, таких как
connect()(по умолчанию: глобальные настройки таймаута). -
source_address (кортеж | None) – Двухэлементный кортеж
(host, port)для привязки сокета к адресу источника перед подключением. -
encoding (строка) – Кодировка для каталогов и имён файлов (по умолчанию:
'utf-8').
-
host (строка) – Имя хоста для подключения. Если задано,
Класс
FTPподдерживает операторwith, например:>>> from ftplib import FTP >>> with FTP("ftp1.at.proftpd.org") as ftp: ... ftp.login() ... ftp.dir() ... '230 Anonymous login ok, restrictions apply.' dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 . dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 .. dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora >>>Изменено в версии 3.2: Добавлена поддержка оператора
with.Изменено в версии 3.3: Добавлен параметр source_address.
Изменено в версии 3.9: Если параметр timeout равен нулю, будет выброшено исключение
ValueErrorдля предотвращения создания неблокирующего сокета. Добавлено параметр encoding, по умолчанию установлено UTF-8, чтобы следовать RFC 2640.Несколько
FTPметодов доступны в двух вариантах: один для работы с текстовыми файлами, другой — с двоичными файлами. Методы названы по команде, используемой с добавлениемlinesдля текстовой версии илиbinaryдля двоичной версии.FTPэкземпляры имеют следующие методы:-
set_debuglevel(level) -
Устанавливает уровень отладки экземпляра как
int. Это управляет объёмом выводимой отладочной информации. Уровни отладки:-
0(по умолчанию): Отладочная информация не выводится. -
1: Выводится умеренное количество отладочной информации, обычно по одной строке на запрос. -
2и выше: Выводится максимальное количество отладочной информации, регистрируется каждая строка, отправленная и полученная по управляющему соединению.
-
-
connect(host='', port=0, timeout=None, source_address=None) -
Подключается к заданному хосту и порту. Эта функция должна быть вызвана только один раз для каждого экземпляра; её не нужно вызывать, если параметр host был передан при создании экземпляра
FTP. Все остальныеFTPметоды могут быть вызваны только после успешного подключения.- Параметры:
-
- host (строка) – Хост для подключения.
-
port (целое число) – TCP-порт для подключения (по умолчанию:
21, как указано в спецификации протокола FTP). Редко требуется указывать другой номер порта. - timeout (число с плавающей точкой | None) – Таймаут в секундах для попытки подключения (по умолчанию: глобальные настройки таймаута).
-
source_address (кортеж | None) – Двухэлементный кортеж
(host, port)для привязки сокета к адресу источника перед подключением.
Вызывает событие аудита
ftplib.connectс аргументамиself,host,port.Изменено в версии 3.3: Добавлен параметр source_address.
-
getwelcome() -
Возвращает сообщение приветствия, отправленное сервером в ответ на первоначальное подключение. (Это сообщение иногда содержит важные для пользователя отметки или справочную информацию).
-
login(user='anonymous', passwd='', acct='') -
Выполняет вход на подключённый FTP-сервер. Эта функция должна быть вызвана только один раз для каждого экземпляра после установления соединения; её не нужно вызывать, если параметры host и user были переданы при создании экземпляра
FTP. Большинство команд FTP доступны только после входа.- Параметры:
-
-
user (строка) – Имя пользователя для входа (по умолчанию:
'anonymous'). -
passwd (строка) – Пароль для входа. Если не задан, и если passwd пустая строка или
"-", пароль будет сгенерирован автоматически. -
acct (строка) – Данные учетной записи, используемые для команды
ACCTFTP. Несколько систем поддерживают эту команду. Подробнее см. RFC-959.
-
user (строка) – Имя пользователя для входа (по умолчанию:
-
abort() -
Прерывает процесс передачи файла. Иногда это работает, но стоит попробовать.
-
sendcmd(cmd) -
Отправляет простую строку команды на сервер и возвращает строку ответа.
Вызывает событие аудита
ftplib.sendcmdс аргументамиself,cmd.
-
voidcmd(cmd) -
Отправляет простую строку команды на сервер и обрабатывает ответ. Возвращает строку ответа, если код ответа соответствует успеху (коды в диапазоне 200–299). В противном случае вызывается исключение
error_reply.Вызывает событие аудита
ftplib.sendcmdс аргументамиself,cmd.
-
retrbinary(cmd, callback, blocksize=8192, rest=None) -
Получение файла в двоичном режиме передачи.
- Параметры:
-
-
cmd (строка) – Соответствующая команда
RETR:"RETR filename". -
callback (вызываемый объект) – Вызываемый объект с одним параметром, который вызывается для каждого блока полученных данных, содержащих данные в виде
bytes. -
blocksize (целое число) – Максимальный размер блока для чтения на низком уровне объекта
socket, созданного для выполнения фактической передачи. Это также соответствует максимальному размеру данных, которые будут переданы callback. По умолчанию8192. -
rest (целое число) – Команда
RESTдля отправки на сервер. См. документацию для параметра rest методаtransfercmd().
-
cmd (строка) – Соответствующая команда
-
retrlines(cmd, callback=None) -
Получить список файлов или директорий в кодировке, указанной параметром encoding при инициализации. cmd должен быть подходящей
RETRкомандой (см.retrbinary()) или командой, такой какLISTилиNLST(обычно просто строка'LIST').LISTполучает список файлов и информацию о них.NLSTполучает список имён файлов. Функция callback вызывается для каждой строки с строковым аргументом, содержащим строку с удалёнными завершающими CRLF. По умолчанию callback выводит строку вsys.stdout.
-
set_pasv(val) -
Включить «пассивный» режим, если val истинно, иначе отключить пассивный режим. Пассивный режим включен по умолчанию.
-
storbinary(cmd, fp, blocksize=8192, callback=None, rest=None) -
Сохранить файл в двоичном режиме передачи.
- Параметры:
-
-
cmd (str) – Подходящая
STORкоманда:"STOR filename". -
fp (объект файла) – Объект файла (открыт в двоичном режиме), который читается до конца файла, используя метод
read()блоками размером blocksize для предоставления данных для сохранения. -
blocksize (int) – Размер блока чтения. По умолчанию
8192. -
callback (вызываемый объект) – Вызываемый объект с одним параметром, который вызывается для каждого блока отправленных данных, с аргументом данных в виде
bytes. -
rest (int) – Команда
RESTдля отправки на сервер. См. документацию для параметра rest методаtransfercmd().
-
cmd (str) – Подходящая
Изменено в версии 3.2: Добавлен параметр rest.
-
storlines(cmd, fp, callback=None) -
Сохранить файл в текстовом режиме. cmd должен быть подходящей
STORкомандой (см.storbinary()). Строки считываются до конца файла из объекта файла fp (открыт в двоичном режиме) с помощью методаreadline()для предоставления данных для сохранения. callback – необязательный вызываемый объект с одним параметром, который вызывается для каждой строки после её отправки.
-
transfercmd(cmd, rest=None) -
Инициализировать передачу по соединению данных. Если передача активна, отправьте команду
EPRTилиPORTи команду передачи, заданную параметром cmd, и примите соединение. Если сервер пассивный, отправьте командуEPSVилиPASV, подключитесь к нему и запустите команду передачи. В любом случае верните сокет для соединения.Если задан необязательный rest, на сервер отправляется команда
RESTс аргументом rest. rest обычно представляет собой смещение байта в запрошенном файле, сообщая серверу о перезапуске отправки байтов файла со смещения, пропуская начальные байты. Однако обратите внимание, что методtransfercmd()преобразует rest в строку с параметром encoding, заданным при инициализации, но проверка содержимого строки не выполняется. Если сервер не распознаёт командуREST, будет поднято исключениеerror_reply. В этом случае просто вызовитеtransfercmd()без аргумента rest.
-
ntransfercmd(cmd, rest=None) -
Как
transfercmd(), но возвращает кортеж из соединения данных и ожидаемого размера данных. Если ожидаемый размер не может быть вычислен,Noneбудет возвращен как ожидаемый размер. cmd и rest означают то же, что и вtransfercmd().
-
mlsd(path='', facts=[]) -
Перечислить директорию в стандартизированном формате, используя команду
MLSD(RFC 3659). Если path опущен, предполагается текущая директория. facts – список строк, представляющих тип требуемой информации (например,["type", "size", "perm"]). Возвращает генератор, который возвращает кортеж из двух элементов для каждого найденного файла в пути. Первый элемент – имя файла, второй – словарь, содержащий сведения о имени файла. Содержимое этого словаря может быть ограничено аргументом facts, но сервер не гарантирует возвращения всех запрошенных данных.Добавлен в версии 3.3.
-
nlst(argument[, ...]) -
Возвращает список имён файлов, как возвращается командой
NLST. Необязательный argument – это директория для перечисления (по умолчанию – текущая директория сервера). Несколько аргументов могут использоваться для передачи нестандартных опций командеNLST.Примечание
Если ваш сервер поддерживает команду,
mlsd()предлагает лучший API.
-
dir(argument[, ...]) -
Выводит список директорий, возвращаемый командой
LIST, на стандартный вывод. Необязательный argument – это директория для перечисления (по умолчанию – текущая директория сервера). Несколько аргументов могут использоваться для передачи нестандартных опций командеLIST.Если последним аргументом является функция, она используется в качестве функции обратного вызова (callback), как и для
retrlines(); по умолчанию выводит вsys.stdout.Этот метод возвращает
None.Примечание
Если ваш сервер поддерживает команду,
mlsd()предлагает лучший API.
-
rename(fromname, toname) -
Переименовать файл fromname на сервере в toname.
-
delete(filename) -
Удалить файл с именем filename с сервера. При успехе возвращает текст ответа, иначе вызывает исключение
error_permпри ошибках доступа илиerror_replyпри других ошибках.
-
cwd(pathname) -
Установить текущую директорию на сервере.
-
mkd(pathname) -
Создать новую директорию на сервере.
-
pwd() -
Возвратить путь к текущей директории на сервере.
-
rmd(dirname) -
Удалить директорию с именем dirname на сервере.
-
size(filename) -
Запросить размер файла с именем filename на сервере. При успехе возвращает размер файла как целое число, иначе возвращает
None. Обратите внимание, что командаSIZEне стандартизована, но поддерживается многими распространёнными реализациями серверов.
-
-
close() -
Закрыть соединение односторонне. Это не должно применяться к уже закрытому соединению, например, после успешного вызова
quit(). После этого вызова экземплярFTPбольше не должен использоваться (после вызоваclose()илиquit()вы не можете повторно открыть соединение, выполнив другой методlogin()).
-
Объекты FTP_TLS
-
class ftplib.FTP_TLS(host='', user='', passwd='', acct='', *, context=None, timeout=None, source_address=None, encoding='utf-8') -
Подкласс
FTP, который добавляет поддержку TLS к FTP, как описано в RFC 4217. Подключается к порту 21, неявно защищая FTP-соединение управления перед аутентификацией.Примечание
Пользователь должен явно защитить соединение данных, вызвав метод
prot_p().- Параметры:
-
-
host (str) – Имя хоста для подключения. Если указано,
connect(host)неявно вызывается конструктором. -
user (str) – Имя пользователя для входа (по умолчанию:
'anonymous'). Если указано,login(host, passwd, acct)неявно вызывается конструктором. -
passwd (str) – Пароль для входа. Если не указан и если passwd пустая строка или
"-", пароль будет сгенерирован автоматически. -
acct (str) – Информация об учетной записи для использования в команде FTP
ACCT. Несколько систем поддерживают это. Смотрите RFC-959 для получения дополнительной информации. -
context (
ssl.SSLContext) – Объект контекста SSL, который позволяет объединить параметры конфигурации SSL, сертификаты и закрытые ключи в одну, потенциально долгоживущую структуру. Для получения рекомендаций по наилучшим практикам, пожалуйста, прочтите Рекомендации по безопасности. -
timeout (float | None) – Таймаут в секундах для блокирующих операций, таких как
connect()(по умолчанию: глобальное значение таймаута по умолчанию). -
source_address (tuple | None) – Пара
(host, port)2-кортеж для сокета, к которому необходимо привязаться в качестве адреса источника перед подключением. -
encoding (str) – Кодировка для каталогов и имён файлов (по умолчанию:
'utf-8').
-
host (str) – Имя хоста для подключения. Если указано,
Добавлен в версии 3.2.
Изменено в версии 3.3: Добавлен параметр source_address.
Изменено в версии 3.4: Класс теперь поддерживает проверку имени хоста с помощью
ssl.SSLContext.check_hostnameи Server Name Indication (см.ssl.HAS_SNI).Изменено в версии 3.9: Если параметр timeout установлен в ноль, будет поднято исключение
ValueErrorдля предотвращения создания неблокирующего сокета. Параметр encoding был добавлен, а значение по умолчанию было изменено с Latin-1 на UTF-8 для соответствия RFC 2640.Изменено в версии 3.12: Устаревшие параметры keyfile и certfile были удалены.
Вот пример сессии, использующей класс
FTP_TLS:>>> ftps = FTP_TLS('ftp.pureftpd.org') >>> ftps.login() '230 Anonymous user logged in' >>> ftps.prot_p() '200 Data protection level set to "private"' >>> ftps.nlst() ['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']FTP_TLSкласс наследуется отFTP, определяя следующие дополнительные методы и атрибуты:-
ssl_version -
Используемая версия SSL (по умолчанию
ssl.PROTOCOL_SSLv23).
-
auth() -
Настройка защищённого соединения управления с помощью TLS или SSL в зависимости от того, что указано в атрибуте
ssl_version.Изменено в версии 3.4: Метод теперь поддерживает проверку имени хоста с помощью
ssl.SSLContext.check_hostnameи Server Name Indication (см.ssl.HAS_SNI).
-
ccc() -
Возвращение канала управления обратно в текстовый формат. Это может быть полезно для использования брандмауэров, которые знают, как обработать NAT с небезопасным FTP без открытия фиксированных портов.
Добавлен в версии 3.3.
-
prot_p() -
Настройка защищённого соединения данных.
-
prot_c() -
Настройка соединения данных в открытом формате.
Переменные модуля
-
exception ftplib.error_reply -
Исключение, генерируемое при получении неожиданного ответа от сервера.
-
exception ftplib.error_temp -
Исключение, генерируемое при получении кода ошибки, обозначающего временную ошибку (коды ответов в диапазоне 400–499).
-
exception ftplib.error_perm -
Исключение, генерируемое при получении кода ошибки, обозначающего постоянную ошибку (коды ответов в диапазоне 500–599).
-
exception ftplib.error_proto -
Исключение, генерируемое при получении ответа от сервера, который не соответствует спецификациям протокола передачи файлов, то есть начинается с цифры в диапазоне от 1 до 5.
-
ftplib.all_errors -
Множество всех исключений (как кортеж), которые методы экземпляров
FTPмогут генерировать в результате проблем с FTP-соединением (в отличие от ошибок программирования, допущенных вызывающим лицом). Это множество включает в себя четыре перечисленные выше исключения, а такжеOSErrorиEOFError.
См. также
-
Modulenetrc -
Парсер для формата файла
.netrc. Файл.netrcобычно используется клиентами FTP для загрузки информации об аутентификации пользователя перед запросом у пользователя.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/ftplib.html