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.
Доступность: не Emscripten, не WASI.
Этот модуль не работает или недоступен на платформах WebAssembly wasm32-emscripten и wasm32-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 (str) – Имя хоста для подключения. Если указано,
connect(host)неявно вызывается конструктором. -
user (str) – Имя пользователя для входа (по умолчанию:
'anonymous'). Если указано,login(host, passwd, acct)неявно вызывается конструктором. -
passwd (str) – Пароль для входа. Если не указан и passwd пустая строка или
"-", пароль будет сгенерирован автоматически. -
acct (str) – Информация об учетной записи, используемая для команды
ACCTFTP. Несколько систем реализуют эту опцию. См. RFC-959 для получения более подробной информации. -
timeout (float | None) – Таймаут в секундах для блокирующих операций, таких как
connect()(по умолчанию: глобальная настройка таймаута). -
source_address (tuple | None) – Кортеж
(host, port)для привязки сокета в качестве адреса источника перед подключением. -
encoding (str) – Кодировка для каталогов и имён файлов (по умолчанию:
'utf-8').
-
host (str) – Имя хоста для подключения. Если указано,
Класс
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, и значение по умолчанию было изменено с Latin-1 на 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 (str) – Хост для подключения.
-
port (int) – TCP-порт для подключения (по умолчанию:
21, как указано в спецификации протокола FTP). Редко требуется указать другой номер порта. - timeout (float | None) – Таймаут в секундах для попытки подключения (по умолчанию: глобальная настройка таймаута).
-
source_address (tuple | None) – Кортеж
(host, port)для привязки сокета в качестве адреса источника перед подключением.
Вызывает событие аудита аудита
ftplib.connectс аргументамиself,host,port.Изменено в версии 3.3: Добавлен параметр source_address.
-
getwelcome() -
Возвращает приветственное сообщение, отправленное сервером в ответ на первоначальное подключение. (Это сообщение иногда содержит отметки или справочную информацию, которая может быть полезна пользователю.)
-
login(user='anonymous', passwd='', acct='') -
Войти на подключённый FTP-сервер. Эта функция должна быть вызвана только один раз для каждого экземпляра после установления подключения; её не следует вызывать, если параметры host и user были переданы при создании экземпляра
FTP. Большинство команд FTP разрешены только после входа.- Параметры:
-
-
user (str) – Имя пользователя для входа (по умолчанию:
'anonymous'). -
passwd (str) – Пароль для входа. Если не указан и passwd пустая строка или
"-", пароль будет сгенерирован автоматически. -
acct (str) – Информация об учетной записи, используемая для команды
ACCTFTP. Несколько систем реализуют эту опцию. См. RFC-959 для получения более подробной информации.
-
user (str) – Имя пользователя для входа (по умолчанию:
-
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 (str) – Соответствующая
RETRкоманда:"RETR filename". -
callback (callable) – Функция с одним параметром, которая вызывается для каждого блока полученных данных, где единственный аргумент — данные как
bytes. -
blocksize (int) – Максимальный размер блока для чтения на уровне низкоуровневого объекта
socket, созданного для фактической передачи. Это также соответствует максимальному размеру данных, который будет передан в callback. По умолчанию8192. -
rest (int) – Команда
RESTдля отправки на сервер. См. документацию для параметра rest методаtransfercmd().
-
cmd (str) – Соответствующая
-
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 (объект файла) – Объект файла (открытый в двоичном режиме), который читается до EOF, используя его метод
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()). Строки читаются до EOF из объекта файла 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"]). Возвращает генератор, возвращающий кортеж из двух элементов для каждого найденного файла в path. Первый элемент – имя файла, второй – словарь, содержащий информацию о файле. Содержимое этого словаря может быть ограничено аргументом 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)для привязки сокета к адресу источника перед подключением. -
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.12/library/ftplib.html