Рубрики
Без рубрики

Введение в Python FTP

Автор оригинала: Guest Contributor.

Вступление

В этом уроке мы рассмотрим, как использовать FTP с Python для отправки и получения файлов с сервера через TCP/IP соединения.

Чтобы сделать вещи проще и абстрактнее, мы будем использовать библиотеку Python ftplib , которая предоставляет ряд функций, облегчающих работу с FTP. Мы увидим реализацию для загрузки и выгрузки файлов с сервера, а также некоторые другие интересные вещи, которые “ftplib” позволяет нам делать.

Что такое FTP?

FTP расшифровывается как Протокол передачи файлов; он основан на архитектуре клиент-серверной модели и широко используется. Он имеет два канала: командный канал и канал передачи данных. Командный канал используется для управления коммуникацией, а канал данных-для фактической передачи файлов. Существует широкий спектр вещей, которые вы можете делать с помощью FTP, таких как перемещение, загрузка, копирование файлов и т. Д. Мы обсудим это в следующем разделе, а также подробно расскажем, как это сделать с помощью Python.

Работа с FTP в Python

Двигаясь дальше, вы были бы рады узнать, что ftplib -это встроенная библиотека, которая уже установлена вместе с Python, все, что вам нужно сделать, это импортировать ее в свой скрипт, и вы можете начать использовать ее функции. Чтобы импортировать его, используйте следующую команду:

from ftplib import FTP

После этого нам нужно инициировать соединение с FTP-сервером, с которым мы хотим открыть канал связи. Для этого создайте экземпляр ftp :

# Replace the example domain with your domain name
ftp = FTP('ftp.example.com')

Описанный выше метод использует порт по умолчанию, то есть порт 21, для установления соединения с сервером. Следующий шаг-предоставить свои учетные данные для входа, то есть имя пользователя и пароль, чтобы получить доступ к файлам на сервере. Для этого вы можете использовать следующий метод:

ftp.login('your_username','your_password')

Значения по умолчанию для имени пользователя и пароля – “anonymous” и “[email protected] ” соответственно. Если соединение прошло успешно, вы должны получить сообщение, похожее на “230 Login Successful”.

Теперь, когда мы установили соединение с сервером, мы хотим перейти в каталог, в котором мы хотим выполнить операции, то есть получить или записать файл. Для этого мы меняем “текущий рабочий каталог” с помощью следующей команды:

ftp.cwd('/path/to/the/directory/')

Давайте теперь обсудим некоторые основные примеры того, как получить файл из каталога или записать файл в каталог. Объяснение кода приводится в комментариях рядом с каждой строкой кода:

file_name = 'a-filename.txt'
my_file = open(file_name, 'wb') # Open a local file to store the downloaded file
ftp.retrbinary('RETR ' + file_name, my_file.write, 1024) # Enter the filename to download

В приведенном выше вызове retrbinary значение 1024 означает, что файл будет загружаться блоками по 1024 байта до тех пор, пока не будет передан весь файл.

Есть еще одна вещь, которую вам нужно сделать после загрузки или загрузки файла – закрыть этот файл, а также закрыть FTP-соединение, которое вы открыли. Вы можете сделать это для приведенного выше примера со следующими двумя строками кода:

ftp.quit() # Terminate the FTP connection
my_file.close() # Close the local file you had opened for downloading/storing its content

Давайте теперь попробуем загрузить файл на сервер. В дополнение к приведенным ниже командам вам также придется переписать команды, которые мы использовали выше, чтобы открыть FTP-соединение.

file_name = 'a-filename.txt'
ftp.storbinary('STOR ' + file_name, open(file_name, rb))

В приведенных выше примерах “rb” и “wb” означают “чтение двоичного кода” и “запись двоичного кода” соответственно.

Дополнительные функции FTP

Теперь, когда мы обсудили реализацию основных функций, давайте рассмотрим некоторые дополнительные функции, которые предоставляет нам ftplib .

Список файлов и каталогов

Чтобы просмотреть файлы и папки в текущем рабочем каталоге в формате списка, выполните команду retrlines :

ftp.retrlines('LIST')

Создайте новый каталог

Чтобы упорядочить файлы определенным образом, вам может потребоваться создать новый каталог на сервере, что можно сделать с помощью одной строки кода:

ftp.mkd('/path/for/the/directory')

Путь будет местом, в котором вы хотите, чтобы новый каталог был расположен.

Удаление файла с сервера

Удалить файл на сервере довольно просто, вам просто нужно дать имя файла в качестве параметра функции delete. Об успехе или неудаче операции будет сообщено ответным сообщением.

ftp.delete('file_name_to_delete')

Проверьте Текущий Путь

Чтобы проверить текущий путь, просто запустите следующий код:

ftp.pwd()

Эта команда вернет абсолютный путь к текущему рабочему каталогу.

Осторожность

Важно отметить, что хотя FTP сам по себе довольно безопасен, он обычно не используется для передачи конфиденциальной информации; если вы передаете что-то подобное, то вам следует выбрать более безопасные варианты, такие как SFTP (Secure FTP) или SSH (Secure Shell). Это наиболее часто используемые протоколы для обработки конфиденциальной передачи данных.

Вывод

В этом посте мы обсудили, что такое FTP и как он работает с помощью различных примеров. Мы также видели, как использовать модуль Python “ftplib” для связи с удаленным сервером с помощью FTP, и видели некоторые другие функции, которые предлагает этот модуль. В конце концов, мы также обсудили некоторые более безопасные альтернативы FTP, такие как SFTP и SSH, которые используются для передачи конфиденциальной информации.

Для получения дополнительной информации об использовании FTP с Python см. official ftplib docs или RFC 959 .