Как написать сценарий загрузки FTP и загрузки?

Вам необходимо создать пользовательский шаблонный фильтр .

from django.template import Library
from django.utils.numberformat import format

register = Library()

@register.filter
def floatdot(value, decimal_pos=4):
    return format(value, ".", decimal_pos)

floatdot.is_safe = True

Использование:

{{ float_var|floatdot }} или {{ float_var|floatdot:2 }}

39
задан Cheeso 1 June 2009 в 21:44
поделиться

5 ответов

Это разумная идея - создать сценарий FTP-сеанса так, как предполагал исходный постер, и это то, с чем Expect может помочь. Пакетные файлы в Windows не могут этого сделать.

Но вместо использования cURL или Expect вам может быть проще написать сценарий взаимодействия FTP с Powershell. Это другая модель, в которой вы не пишете напрямую сценарий для отправки текста на FTP-сервер. Вместо этого вы будете использовать Powershell для управления объектами, которые генерируют для вас диалог FTP.

Загрузить:

$File = "D:\Dev\somefilename.zip"
$ftp = "ftp://username:password@example.com/pub/incoming/somefilename.zip"

"ftp url: $ftp"

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)

"Uploading $File..."

$webclient.UploadFile($uri, $File)

Загрузить:

$File = "c:\store\somefilename.zip"
$ftp = "ftp://username:password@example.com/pub/outbound/somefilename.zip"

"ftp url: $ftp"

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)

"Downloading $File..."

$webclient.DownloadFile($uri, $File)

Для этого вам понадобится Powershell. Если вы не знаете, Powershell - это оболочка, подобная cmd.exe, которая запускает ваши .bat-файлы. Но Powershell запускает файлы .ps1 и намного мощнее. Powershell - это бесплатное дополнение к Windows, которое будет встроено в будущие версии Windows. Получите здесь .

Источник: http://poshcode.org/1134

66
ответ дан 27 November 2019 в 02:12
поделиться

Создайте командный файл со своими командами

, например: commands.txt

open www.domainhere.com
user useridhere 
passwordhere
put test.txt
bye

Затем запустите клиент FTP из командной строки: ftp -s: commands.txt

Примечание: это будет работать для FTP-клиента Windows.

Изменить: должен был быть разрыв строки после имени пользователя перед паролем.

26
ответ дан 27 November 2019 в 02:12
поделиться

Пакетные файлы не работают. Они не просто "набирают" все - они запускают системные команды, в данном случае ftp , ждут их возврата и запускают следующую команду ... так что в этом случае интерпретатор просто ждет для выхода ftp .

Если вы должны использовать команду ftp , затем подготовьте файл сценария (например, commands.txt и запустите ftp -s: commands.txt .

Но лучше использовать cURL или PHP / Perl / Python / любой другой скрипт.

6
ответ дан 27 November 2019 в 02:12
поделиться

Попробуйте вручную:

$ ftp www.domainhere.com 
> useridhere
> passwordhere
> put test.txt
> bye
> pause
0
ответ дан 27 November 2019 в 02:12
поделиться

У меня была такая же проблема, и я решил ее с помощью решения, аналогичного тому, что предоставил Cheeso выше.

«не работает, говорит, что пароль необходим, попробовал несколько разных способов»

Ага, это потому что сеансы FTP через командный файл не требуют, чтобы имя пользователя было предварено строкой «пользователь». Отбросьте это и попробуйте.

Или вы могли видеть это, потому что ваш командный файл FTP не закодирован должным образом (это меня тоже укусило). Это дрянная часть создания командного файла FTP во время выполнения. Командлет Powershell для вывода файла не имеет варианта кодирования, который будет принимать Windows FTP (по крайней мере, не тот, который я смог найти).

Тем не менее, создание WebClient.DownloadFile - это лучший способ.

0
ответ дан 27 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: