Загружает один или более файлов на удалённый хост.
put возвращает итерируемый объект, содержащий абсолютные пути ко всем загруженным файлам. Этот итерируемый объект содержит также атрибут
.failed, содержащий пути к локальным файлам, которые не удалось выгрузить (и потому его можно использовать для логической проверки.) Кроме того, Вы можете использовать
.succeeded, который эквивалентен
not .failed.
local_path может быть как относительным, так и абсолютным путём, или даже каталогом, может содержать символы подстановки оболочки, как они используются в модуле glob. Можно использовать и ~ (так же как в os.path.expanduser).
local_path может быть и файлоподобным объектом, как, например, результатом open('path') или экземпляром StringIO.
Примечание
В таком случае put постарается прочитать всё содержимое файлоподобного объекта, проматывая его при помощи seek (и будет использовать tell для сохранения предыдущей позиции файла). Примечание
Использование файлоподобного объекта в команде
put в аргументе
local_path приведёт к удалению временного файла из-за нашей реалиации слоя SSH.
remote_path также может быть абсолютным или относительным путём, но применяется к удалённому узлу. Относительный genm трактуется относительно домашней директории удалённого пользователя, но, при необходимости, можно использовать и тильду (т.е. ~/.ssh/).
Пустая строка в качестве значения любого из двух аргументов пути будет замещена на текущий рабочий каталог.
Хотя протокол SFTP (который используется
put) не имеет возможности загрузить файл в локацию, которая не принадлежит подключившемуся пользователю, Вы можете задать
use_sudo=True, чтобы обойти это. При использовании этого параметра
put загружает файлы во временный каталог на удалённом хосте и затем использует
sudo для перемещения их в
remote_path.
В некоторых случаях желательно чтобы загруженные файлы имели аналогичный режим, как и их локальные «коллеги» (например, когда Вы загружаете выполняемые скрипты). Для этого используйте mirror_local_mode=True.
В качестве альтернативы Вы можете использовать именованный аргумент mode для того, чтобы задать режим извлечения так же как и os.chmod или команда Unix chmod.
put учитывает результат
cd, так что относительные пути в
remote_path будут толковаться относительно текущего удалённого рабочего каталога, если это возможно. Таким образом, например, код ниже выгрузит файл в
/tmp/files/test.txt а не в
~/files/test.txt:
with cd('/tmp'):
put('/path/to/local/test.txt', 'files')
Использование
lcd будет влиять на
local_path аналогичным образом.
Примеры:
put('bin/project.zip', '/tmp/project.zip')
put('*.py', 'cgi-bin/')
put('index.html', 'index.html', mode=0755)
Примечание
Если файлоподобный объект, такой как StringIO, имеет атрибут name, то его значение будет использоваться в выводе Fabric, вместо стандартного obj>
Изменения в версии 1.0: Теперь учитывается удалённый рабочий каталог, управляемый cd, и локальный рабочий каталог, управляемый
lcd.
Изменения в версии 1.0: Теперь можно использовать файлоподобные объекты в аргументе local_path.
Изменения в версии 1.0: В аргументе local_path можно задать каталог, который будет рекурсивно выгружен на удалённый узел.
Изменения в версии 1.0: Возвращает итерируемый объект, содержащий удалённые пути с атрибутами .failed и.succeeded.
Изменения в версии 1.5: Позволяет использовать атрибут name файлоподобного объекта для вывода лога