Python ftplib - загрузка нескольких файлов? - PullRequest
3 голосов
/ 10 июля 2009

Я гуглил, но я мог найти только как загрузить один файл ... и я пытаюсь загрузить все файлы из локального каталога в удаленный каталог ftp. Есть идеи как этого добиться?

Ответы [ 3 ]

10 голосов
/ 10 июля 2009

с петлей?

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

import os
for root, dirs, files in os.walk('path/to/local/dir'):
    for fname in files:
        full_fname = os.path.join(root, fname)
        ftp.storbinary('STOR remote/dir' + fname, open(full_fname, 'rb'))

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

0 голосов
/ 11 февраля 2017

Посмотрите на Python-скрипты, необходимые для создания файлов загрузки из JSON-Call и следующей FTPlib-операция: почему некоторые загрузки, а другие нет?

Хотя стартовая позиция отличается от вашего вопроса, в Ответе этого первого URL вы видите пример конструкции для загрузки по ftplib json-файла плюс xml-файла: посмотрите на скрипт 024 и далее .

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

Также применимо для файлов других типов, кроме json и xml, очевидно, с другой «записью» перед двумя последними разделами, которые определяют и реализуют функцию FTP_Upload.

0 голосов
/ 10 июля 2009

Создайте пакетный файл FTP (со списком файлов, которые необходимо передать). Используйте python для запуска ftp.exe с параметром "-s" и передачи списка файлов.

Это глупо, но, очевидно, FTP-библиотека не принимает несколько файлов в своей команде STOR.

Вот пример пакетного файла ftp.

*

OPEN inetxxx 
myuser mypasswd 
binary 
prompt off 
cd ~/my_reg/cronjobs/k_load/incoming 
mput *.csv 
bye
  • Если вышеупомянутое содержимое было в файле с именем "abc.ftp" - тогда моя команда ftp была бы

    ftp -s abc.ftp

Надеюсь, это поможет.

...