Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2014 09:32:18

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Как скопировать полный каталог на FTP?

Т.к. решить проблему описанную в данной теме у меня не получилось, то прошу подсказать мне любой самый простой вариант как скопировать каталог с файлами на FTP. Можно даже дергать сторонние утилиты, главное чтобы они были консольными и портабельными в виде одного exe-шника.

Видимо библиотека глючная – т.к. права доступа на тот каталог у меня есть, однако ничего лучше я не нашел.

Офлайн

#2 Сен. 4, 2014 18:19:20

bs0d
Зарегистрирован: 2014-02-01
Сообщения: 76
Репутация: +  2  -
Профиль   Отправить e-mail  

Как скопировать полный каталог на FTP?

Можно воспользоваться вот таким вариантом, состряпанным за пол-часа
python 3.3 x86, либы стандартные

from ftplib import FTP
import os
class FtpUploadFolder():
    def __init__(self, server, user, passwd, catalog):
        self.fcount = 0
        self.dcount = 0
        self.ftp = FTP(server, user, passwd)
        self.ftp.cwd(catalog)
        
    def uploadOne(self, new_name, path_name):
        self.ftp.storbinary('STOR ' + new_name, open(path_name, 'rb') )
    
    def uploadDir(self, localdir):
        localfiles = os.listdir(localdir)
        
        for localname in localfiles:
            localpath = os.path.join(localdir, localname)
            print('uploading', localpath, 'to', localname)
            if not os.path.isdir(localpath):
                self.uploadOne(localname, localpath)
                self.fcount += 1
            else:
                try:
                    self.ftp.mkd(localname)
                    print('directory created', localname)
                except:
                    print('directory not created')
                self.ftp.cwd(localname)
                self.uploadDir(localpath)
                self.ftp.cwd('..')
                self.dcount += 1
                print('directory exited')
    def close(self):
        self.ftp.quit()
        print('uploaded files: ', self.fcount)
        print('uploaded folders: ', self.dcount)
        
if __name__ == '__main__':
    f = FtpUploadFolder('ftp.test.com', 'user_login', 'user_pass', 'http') # http - папка на сервере, в которую загружаем
    f.uploadDir('c:\\catalog') # папка, которую загружаем
    f.close()

Отредактировано bs0d (Сен. 4, 2014 18:29:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version