@code_bit

Как загрузить файл на FTP используя Python скрипт в активном режиме?

Есть некая промышленная железка, подключаюсь к ней всегда локально. На железке стандартный FTP сервер, на который нужно загрузить файл используя Python скрипт. Если я использую стандартный клиент ftp.exe в Windows - все прекрасно загружается с помощь. команды:
put "C:\путь до файла\файл"
Если я стучусь с помощью скрипта вроде:
USER = 'xxxx'
PASS = 'xxxx'
SERVER = '192.168.1.x'
PORT = 21
ftp = ftplib.FTP(HOST, USER, PASS)
upload_file = open("C:\file.zip", 'rb')
ftp_connetion.storbinary('STOR ' + 'file.zip', upload_file)

общение выглядит следующим образом:
5a201ed20a18c584584874.png
и на этом все останавливается...
Возможно ли, что для этого устройства доступен только активный режим передачи файла, который как раз идет с FTP.exe и командой put? Как его реализовать в Python? Во всех примерах, которые удалось найти в интернете используется только пассивный режим вместе с storbinary.
  • Вопрос задан
  • 3229 просмотров
Пригласить эксперта
Ответы на вопрос 1
@merakroh
Привет. Storbinary метод объекта ftp, а не объекта ftp_connection. Так же вы открываете файл, но не закрываете его после всех манипуляций с ним. После создания объекта ftp необходимо выполнить авторизацию с помощью команды ftp.login(). Попробуйте изменить ваш код таким образом:
USER = 'xxxx'
PASS = 'xxxx'
SERVER = '192.168.1.x'
PORT = 21
ftp = ftplib.FTP(HOST, USER, PASS)
ftp.login()
# Конструкция открывает файл в заданном режиме и в любом случае закроет его
with open("C:\file.zip", 'rb') as upload_file:
    ftp.storbinary('STOR ' + 'file.zip', upload_file)
# Закрываем FTP соединение
ftp.close

Если будет выскакивать ошибка авторизации, попробуйте изменить строки:
ftp = ftplib.FTP(HOST, USER, PASS)
ftp.login()

на:
ftp = ftplib.FTP(HOST)
ftp.login(USER, PASS)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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