Найти - Пользователи
Полная версия: Создаем программу которая подключается к FTP скачивает файлы , разворачивает zip, заворачивает паку в zip архив
Начало » Python для новичков » Создаем программу которая подключается к FTP скачивает файлы , разворачивает zip, заворачивает паку в zip архив
1 2
VIRTOK
Нужно создать программу которая
1) Подключается к FTP
2) Скачивает каталог(с фалами) с FTP
4) Создается каталог куда кладутся файлы с FTP
3) В каталог с скаченными файлами , есть zip архив , разархивируем его .
4) После выберем нужные каталоги (с файлами в нутри) и перекладываем в другие папки
5) Берем паку и архивируем ее в формате zip

VIRTOK
Накидал код

 import os
import time
# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = ['C:\\test1']
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'D:\\Backup' # Подставьте тот путь, который вы будете использовать.
# 3. Файлы помещаются в zip-архив.
# 4. Текущая дата служит именем подкаталога в основном каталоге
today = target_dir + os.sep + time.strftime('%Y%m%d')
# Текущее время служит именем zip-архива
now = time.strftime('%H%M%S')
# Создаём каталог, если его ещё нет
if not os.path.exists(today):
             os.mkdir(today) # создание каталога
print('Каталог успешно создан', today)
# Имя zip-файла
target = today + os.sep + now + '.zip'
# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))
# Запускаем создание резервной копии
if os.system(zip_command) == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')
Но вот не задача в ответ в терминале получаю
 C:\Users\Master\AppData\Local\Programs\Python\Python36\python.exe D:/IdeaProjects/Python/Бекап/2-backup_ver2.py
Каталог успешно создан D:\Backup\20171104
"zip" �� ���� ����७��� ��� ���譥�
��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���.
Создание резервной копии НЕ УДАЛОСЬ
Process finished with exit code 0
py.user.next
Выведи
 print(repr(zip_command))
после составления zip_command.
VIRTOK
Ввел
print(repr(zip_command))
после составления zip_command.

Результат выполнения операции
 C:\Users\Master\AppData\Local\Programs\Python\Python36\python.exe D:/IdeaProjects/Python/Backup/1-Backup.py
Каталог успешно создан D:\Backup\20171104
'zip -qr D:\\Backup\\20171104\\121831.zip C:\\test1'
"zip" �� ���� ����७��� ��� ���譥�
��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���.
Создание резервной копии НЕ УДАЛОСЬ
Process finished with exit code 0
py.user.next
Значит, cmd не может программу zip найти. Попробуй просто выполнить zip через os.system() прямо в новой консоли питона. А потом попробуй выполнить notepad.
VIRTOK
Прошу помочь написать строчку на Питоне правильно.
На данный момент она имеет вид:
 zip_command = "C:\\Program Files (x86)\\7-Zip\\7z.exe" ' ' "a -tzip {0} {1}".format(target, ' '.join(source))
Результат выполнения строчки :
 Команда для архивации 'C:\\Program Files (x86)\\7-Zip\\7z.exe a -tzip D:\\Backup\\20171104\\231947.zip C:\\test1'
Выводы
Для корректной работы программы нужно чтобы
строчка имела вид
'"C:\\Program Files (x86)\\7-Zip\\7z.exe" a -tzip D:\\Backup\\20171104\\231947.zip C:\\test1'

doza_and
VIRTOK
строчка имела вид…
1. Напрашивается “Не знала баба горя, купила баба порося”. Сами ведь поставили 7zip в папку с пробелами внутри пути. Теперь вот и мучайтесь с кавычками и в питоне и в командной строке. Я никогда если есть возможность под виндой не ставлю программы в такие дурацкие директории. Вы можете переставить 7zip или добавить путь в path, потому что у другого человека 7zip может стоять в другом месте или вы его переставите например.
2. Вовсе не обязательно целиком строку делать. subprocess.run и список примет, там будет проще кавычки в кавычках поставить.
3. Для разархивации не обязательно использовать 7zip. ZipFile из питона может сделать тоже самое.
VIRTOK
Задача с архиватором решена
 # coding:utf8
# создание архива директории  с помощью модуля zipfile
#--------------------------------------------------------------------
import os
import time
import zipfile
# Директория для создания архива
#source=input('Укажите файл для упаковки в zip архив -->')
source='D:\\BT1'
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'C:\\BACKUP' # Подставьте тот путь, который вы будете использовать.
# Создаём каталог, если его ещё нет
if not os.path.exists(target_dir):
    os.mkdir(target_dir) # создание каталога
    print('Каталог успешно создан', target_dir)
# 3. Файлы помещаются в zip-архив.
# 4. Текущая дата служит именем подкаталога в основном каталоге
today = target_dir + os.sep + time.strftime('%Y%m%d')
# Текущее время служит именем zip-архива
now = time.strftime('%H%M%S')
# Запрашиваем комментарий пользователя для имени файла
comment = input('Введите комментарий --> ')
if len(comment) == 0: # проверяем, введён ли комментарий
    target = today + os.sep + now + '.zip'
else:
    target = today + os.sep + now + '_' + \
             comment.replace(' ', '_') + '.zip'
# Создаём каталог, если его ещё нет
if not os.path.exists(today):
    os.mkdir(today) # создание каталога
    print('Каталог успешно создан', today)
zipp=zipfile.ZipFile(target,mode='w')# создание архива
for root, dirs, files in os.walk(source):# получаем адрес каталога и имена подкатологов и файлов
    for file in files:
        zipp.write(os.path.join(root,file))# пишем файлы в архив
zipp.close()
VIRTOK
Теперь остался открытый вопрос с работой с Python работа с FTP
Как подключиться к FTP и скачать оттуда файл?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB