Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 31.01.2013
Сообщений: 33

Загрузить папку на FTP

30.09.2015, 21:03. Показов 5445. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Подскажите пожалуйста, как загрузить на FTP-сервер при помощи ftplib папку с файлами?
С загрузкой отдельных файлов трудностей нет.
Но как записать на ftp папку с вложенными подпапками? (проблема с подпапками, если делать циклом)
Если будет пример кода, буду очень благодарен.
Поручено по работе, дома к сожалению копии своего кода нет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2015, 21:03
Ответы с готовыми решениями:

Как загрузить файл на FTP сервер
Здравствуйте. Необходимо загрузить zip файл на ftp сервер. Ниже приведен код реализации программы с помощью которой я загружал txt файлы....

FTP создать папку с именем на кириллице
Всем доброго времени суток. есть скрипт для работы с фтп. скрипт считывает имя пользователя пк и создает папку с именем пользователя...

Загрузить все файлы из папки по ftp(ftplib)
В общем есть сервер FTP ,из него надо скачивать ВСЕ файлы каждые 60 сек ,а не один как указанно в моем коде ,причем точное название всех...

3
 Аватар для ivlevdenis
21 / 34 / 14
Регистрация: 23.07.2014
Сообщений: 148
01.10.2015, 07:28
Напиши функцию которая рекурсивно обходит папку выгружая файлы, и вызывает сама себя если находит подпапку.
0
0 / 0 / 1
Регистрация: 31.01.2013
Сообщений: 33
04.10.2015, 18:42  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#includes
from ftplib import *
import os
 
def sendfolder(folder):
    print os.getcwd()
    filelist = os.listdir(folder)
    print os.listdir(folder)
 
    for filename in filelist:
        if os.path.isdir(filename):
            ftp.mkd(filename)
            ftp.cwd(filename)
            os.chdir(folder + "" + filename)
            sendfolder(folder + "" + filename)
 
        elif os.path.isfile(filename):      
            file = open(filename,'r')
            ftp.storbinary('STOR ' + filename, file)
            file.close()
            print "Uploaded " + filename    
 
        else:           
            os.chdir("..")
            ftp.cwd("..")
 
#queryes
ip = raw_input("Please enter IP: ")
                            
#FTP sending
print "Connecting to FTP-server..."
ftp = FTP(ip)
ftp.login("admin","admin")
print ftp.getwelcome()
print ftp.pwd()
print ftp.dir()
dir = os.getcwd()
sendfolder(dir)
ftp.quit()
ftp.close()
вот пример моего быдлокода. получается добраться до самых "глубоких" по вложенности файлов. Но как вернуться на уровень выше? Помогите, кто знает, как усовершенствовать код.
Нужно загрузить на ftp папку со всеми файлами и подпапками.
Я в питоне плохо разбираюсь, к сожалению.(

Добавлено через 11 часов 14 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Загрузить папку на FTP
 
from ftplib import *
import os
import time
def sendfolder(folder):
    listforsend = []
    for file in os.listdir(folder):
        path = os.path.join(folder, file)
        if not os.path.isdir(path):
            sendfile = open(path,'r')
            ftp.storbinary('STOR ' + file, sendfile)
            sendfile.close()
            time.sleep(0.1)
            print "Uploaded " + file
        else:
            print "Directory finded " + path
            ftp.mkd(file)
            ftp.cwd(file)
            sendfolder(path)
    
ftp = FTP('localhost')
ftp.login('anonymous','aa@')
ftp.cwd('ftp')
ftp.dir()
directory = os.getcwd()
sendfolder(directory)
ftp.quit()
ftp.close()
так лучше, но все-таки не то

Добавлено через 20 часов 39 минут
Народ, помогите решить.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.10.2015, 20:58
Вот, накидал на коленке, вроде как работает, подозреваю, что могут быть ошибки.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
 
from ftplib import FTP, error_perm
 
 
def upload_dir(session_ftp, target_dir):
    base_path = os.path.split(target_dir)[0]
 
    for path, dirs, files in os.walk(target_dir):
        # Создаёт на ftp папку
        relative_ftp_path = '.{}'.format(path.replace(base_path, ''))
        try:
            session_ftp.mkd(relative_ftp_path)
        except error_perm:
            pass
 
        for file_name in files:
            # Загружает файлы
            path_to_file = '{}/{}'.format(relative_ftp_path, file_name)
            session_ftp.storbinary('STOR {}'.format(path_to_file),
                           open('{}/{}'.format(path, file_name), 'rb'))
 
 
session = FTP(host='192.168.1.1')
session.login('login', 'passwd')
session.cwd('ftp-home')
upload_dir(session, '/path/to/uploaded/folder')
session.quit()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2015, 20:58
Помогаю со студенческими работами здесь

Как загрузить папку с файлами на ftp сервер
Здравствуйте. Всех с НГ!) есть вопрос: Как загрузить папку с файлами на ftp сервер посредством vb.net ?

В папку лежащую на ftp сервере мне нужно загрузить изображение. Как реализовать?
Здравствуйте. Вопрос таков- у меня есть ссылка на картинку, к примеру вот http://cs540103.vk.me/c7008/v7008715/1efef/y0BWlsN2FFw.jpg и мне...

Открыть ftp.exe, открыть соединение с FTP-сервером, залогиниться, загрузить файл в бинарном режиме и выйти
С помощью .bat мне нужно открыть ftp.exe, открыть соединение с ftp сервером, залогиниться, залить файл в бинарном режиме, выйти. Я...

Как на ftp-сервере сделать папку для всех и папку для некоторых?
ubuntu 12.10 помогите пожалуйста, столкнулся с проблемой создания фтп сервера создается фтп сервер заходит, но каждый пользователь...

Загрузить файл по ftp
Пытаюсь загрузить html файл. Выскакивает ошибка: Необработанное исключение типа "System.Net.WebException" в System.dll ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru