SFTP известен как протокол передачи файлов SSH , а также известен как протокол безопасной передачи файлов. SFTP — это сетевой протокол, который обеспечивает доступ к файлам, их передачу и управление файлами через любой надежный поток данных.
Python sftp
Модуль
Python pysftp — это простой интерфейс для SFTP. Модуль предлагает высокоуровневые абстракции и процедуры на основе задач для обработки потребностей SFTP. Сам протокол SFTP не поддерживает аутентификацию и безопасность; он ожидает, что базовый протокол обеспечит это. SFTP наиболее широко используется в качестве подсистемы реализации протокола SSH версии 2, разработанной той же рабочей группой. Давайте установим модуль pysftp Python sftp .
Установить pysftp
pip install pysftp # или python3 -m pip install pysftp
В зависимости от вашего Python и версии pip он будет установлен в вашей системе.
Как получить доступ к SFTP-серверу с помощью PySftp
Вы можете вывести список содержимого каталога с помощью pysftp в Python. Для этого вам понадобится ваше имя хоста, имя пользователя и пароль.
Затем вам нужно переключиться из каталога, используя либо cwd или chdir и указав удаленный каталог в качестве первого аргумента.
import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root" с pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Переключиться на удаленный каталог sftp.cwd ( '/var/www/vhosts/') # Получить структуру удаленного каталога '/var/www/vhosts' directory_structure = sftp.listdir_attr () # Распечатать данные для attr в структуре_каталога: print (attr.filename, attr) # connection закрывается автоматически в конце оператора with
Конечно, это фиктивный сервер, которого не существует. Тем не менее, в реальной жизни вы должны использовать переменные среды для получения фактических учетных данных в любом файле из соображений безопасности и не помещать все учетные данные в отдельные файлы. Всегда помещайте в файл переменных среды. Например, файл .env .
Теперь давайте посмотрим, что такое происходит. Приведенный выше код подходит и вам, вам просто нужно ввести свои учетные данные, и код будет работать для вас.
Во-первых, мы импортировали pysftp , а затем предоставил мое имя хоста , myUsername и myPassword .
Затем мы использовали оператор Python with, чтобы открыть безопасное соединение с удаленным сервером, указав имя хоста, имя пользователя и пароль.. В случае успеха мы переключим удаленный каталог, извлечем листинг и напечатаем один за другим в консоли.
Список в произвольном порядке. Он не включает уникальные записи «.» И «..». Каждый возвращаемый объект SFTPAttributes будет иметь дополнительное поле: longname , которое может содержать отформатированную строку атрибутов файла в формате UNIX. Содержимое строки будет зависеть от сервера SFTP.
Как загрузить файл с помощью pysftp в Python
Для загрузки файл на удаленном сервере через SFTP с использованием pysftp , вам просто нужно использовать метод sftp.put () клиента SFTP. Метод put ожидает в качестве первого аргумента относительный или абсолютный локальный путь к файлу, который вы хотите загрузить, а в качестве второго аргумента — удаленный путь, по которому файл должен быть загружен.
import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root" с pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определить файл который вы хотите загрузить из своего локального каталога # или абсолютного "/Users/krunal/Desktop/code/pyt/app.txt" localFilePath = './app.txt' # Определите удаленный путь, по которому файл будет загружен remoteFilePath = '/var/backups/app.txt' # Использовать метод put для загрузки файла sftp.put (localFilePath, remoteFilePath) # соединение закрывается автоматически в конце оператора with
В этом коде сначала мы установили безопасное соединение, а затем определили два пути к файлам.
- localFilePath : это путь к локальному файлу.
- remoteFilePath : это путь к удаленному файлу.
Затем мы использовали метод sftp.put () для загрузки файла в сервер.
Как загрузить удаленный файл с помощью pysftp
В приведенном выше разделе мы увидели, как загрузить файл , теперь давайте посмотрим, как загрузить файл.
Чтобы загрузить удаленный файл с сервера с помощью pysftp, мы должны открыть соединение и из экземпляра sftp и использовать метод get, который ожидает путь удаленного файла, который будет загружен, и второй аргумент в качестве локального пути, по которому файл должен быть сохранен.
import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root" с помощью pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определите путь удаленного пути к файлу remoteFilePath = '/var/backups/app.txt' # Определите каталог, в котором вы должны сохранить файл. # или абсолютный "/Users/krunal/Desktop/code/pyt/app.txt" localFilePath = './app.txt' # Используйте метод get для загрузки файла sftp. get (remoteFilePath, localFilePath) # соединение закрывается автоматически в конце оператора with
В приведенном выше коде мы определили соединение, а затем определили два пути к файлам.
- remoteFilePath : это путь, по которому расположен файл.
- localFilePath : это путь, по которому файл будет загружен.
На следующем шаге мы использовали метод get () для загрузки файла.
Как удалить файл с помощью pysftp в Python
Вы можете удалить файл с помощью pysftp, используя метод sftp.remove (). Метод remove () ожидает абсолютный путь к удаленному файлу в качестве первого аргумента.
import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root" с pysftp.Connection ( host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определите путь удаленного пути к файлу removeFilePath = '/var/backups/app.txt' sftp.remove (removeFilePath ) # соединение закрывается автоматически в конце оператора with
В этом коде мы открыли соединение, а затем определили переменную removeFilePath , которая содержит путь к файлу файла, который необходимо удалить.
Затем мы использовали метод sftp.remove () для удаления файла с удаленного сервера.
Модуль PySftp имеет широкий спектр методов, которые вы можете использовать для выполнения нескольких задач, таких как обработка разрешений и т. д., поэтому не забудьте заглянуть на официальный сайт документации здесь.
Наконец, учебник Python sftp i s над.
См. также
Как открыть файл в Python
Как читать файл в Python
Как написать файл в Python
Как скопировать файл в Python
Как импортировать файл на Python