Форум сайта python.su
Начал изучать пайтон по книжке A Byte of Python.
Там есть здание:
Составить программу, которая создаёт резервные
копии всех наших важных файлов.
1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
2. Резервные копии должны храниться в основном каталоге резерва.
3. Файлы помещаются в zip-архив.
4. Именем для zip-архива служит текущая дата и время.
5. Будем использовать стандартную команду zip, имеющуюся по умолчанию в любом
стандартном дистрибутиве GNU/Linux. Пользователи Windows могут установить её
со страницы проекта GnuWin32 и добавить “C:\Program Files\GnuWin32\bin” к си-
стемной переменной окружения PATH, аналогично тому, как мы это делали для са-
мой команды “python”.
Вот код:
import os import time # 1. Файлы и каталоги, которые необходимо скопировать, собираются в список. source = ['"C:\\My Documents"', 'C:\\Code'] # Заметьте, что для имён, содержащих пробелы, необходимо использовать # двойные кавычки внутри строки. # 2. Резервные копии должны храниться в основном каталоге резерва. target_dir = 'E:\\Backup' # Подставьте тот путь, который вы будете использовать. # 3. Файлы помещаются в zip-архив. # 4. Именем для zip-архива служит текущая дата и время. target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip' # 5. Используем команду "zip" для помещения файлов в zip-архив zip_command = "zip -qr {0} {1}".format(target, ' '.join(source)) # Запускаем создание резервной копии if os.system(zip_command) == 0: print('Резервная копия успешно создана в', target) else: print('Создание резервной копии НЕ УДАЛОСЬ')
Отредактировано FishHook (Июль 23, 2019 11:54:31)
Офлайн
Man4o
Дебаг - дело тонкое. Для начала удостоверьтесь, что ваша команда zip в вашей ОС вообще-то работает, безо всякого питона, просто из коммандной строки системы
Отредактировано FishHook (Июль 23, 2019 12:00:39)
Офлайн
Да, в данный момент проблема в том что Windows не знает такую программу zip. А значит у вас проблема с пунктом 5, но не в коде, а в инфраструктуре. Ваша задача сделать так что бы в консоли винды (то что вы dos называете) команда zip работала.
Офлайн
JOHN_16Так а разве того, что я добавил в область видимости переменной path путь в этому архиватору недостаточно?Я просто не совсем понимаю, что еще нужно сделать, чтобы он был виден в консоли видовс…
Ваша задача сделать так что бы в консоли винды (то что вы dos называете) команда zip работала.
Отредактировано Man4o (Июль 23, 2019 12:23:19)
Офлайн
Man4oДолжно быть достаточно. Но вот вообще не факт, что у виндового зипа такая же система параметров, как у никсового. Просто запустите руками с теми параметрами, которые хотите передать программно и проверьте.
Так а разве того, что я добавил в область видимости переменной path путь в этому архиватору недостаточно?
Офлайн
Man4o под вендой рекомендую всегда писать zip.exe(еще лучше с полным указанием пути к файлу), а то может у вас гдето zip.bat/zip.cmd/zip.vbs… лежит, или, что весьма часто случается с новичками, ваш скрипт называеться zip.py. Как вы думаете какую из этих zip.* выберет для запуска ОС?
[code python][/code]
Отредактировано PEHDOM (Июль 23, 2019 20:45:38)
Офлайн
Man4oСкорее всего, установлена ОС x64, а GnuWin32 - 32-битная программа, поэтому и ставится она в c:\Program Files (x86)\, т.е. инструкция актуальна для 32-битной Windows. Найди, куда программа установилась, этот путь в path и добавляй
добавить “C:\Program Files\GnuWin32\bin” к си-
стемной переменной окружения PATH
PEHDOMДля винды же это обычный (не запускаемый) файл, просто так по команде zip он не запустится
ваш скрипт называеться zip.py
Офлайн
Egorro13с чего бы это? если при установке на снять галочку с “ ассоциациировать с пайтоном” и не удалять py launcher то вполне себе запустится.
Для винды же это обычный (не запускаемый) файл, просто так по команде zip он не запустится
print('helooWORLD')
d:\PL\test>zip
helooWORLD
d:\PL\test>
[code python][/code]
Отредактировано PEHDOM (Июль 23, 2019 22:34:19)
Офлайн
PEHDOMСтранно, у себя еще раз проверил - запускается по ассоциации только с указанием расширения, просто по имени - выдает ошибку. Хотя в командной строке уже лет 15 стараюсь не связываться, могу чего-то просто не знать))
Прикреплённый файлы: cmd_2019-07-23_22-30-58.jpg (373,6 KБ)
Офлайн
Офлайн