Найти - Пользователи
Полная версия: Программа, которая создаёт резервные копии файлов.
Начало » Центр помощи » Программа, которая создаёт резервные копии файлов.
1
Fantoccy
Начал изучать язык по книге “Укус Питона” Swaroop C. H.
Там есть задачка cоставить программу, которая создаёт резервные копии файлов.
 import os
import time
# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = ['E:\\Downloads\\TXT', 'E:\\Downloads\\_JPG']
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'E:\\Downloads\\_Pyth0n\\Python_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 -r {0} {1}'.format(target, ' '.join(source))
# Запускаем создание резервной копии
print(zip_command)
if os.system(zip_command) == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')

Системную переменную прописал:


Почему не работает код?


ZerG
без понятия!
Если в CMD ввести руками то что выводится вам “print(zip_command)”
Что будет?
ZerG
Fantoccy
При вставке в командную строку пишет “zip” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Вместо просто zip вписал полный путь "C:\\Program Files (x86)\\GnuWin32\\cin\\zip", после чего код заработал! Ладно, пока пойдет и так. Будем дальше изучать, а с переменными потом разберемся… Спасибо!

 import os
import time
# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = ['E:\\Downloads\\TXT', 'E:\\Downloads\\_JPG']
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = 'E:\\Downloads\\_Pyth0n\\Python_backup' # Подставьте тот путь, который вы будете использовать.
# 3. Файлы помещаются в zip-архив.
# 4. Именем для zip-архива служит текущая дата и время.
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. Используем команду "zip" для помещения файлов в zip-архив
zip_command = '"C:\\Program Files (x86)\\GnuWin32\\cin\\zip" -qr {0} {1}'.format(target, ' '.join(source))
# Запускаем создание резервной копии
print(zip_command)
if os.system(zip_command) == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')
doza_and
Создание переменной окружения zip ничего не меняет. Менять надо переменную окружения path
Fantoccy
Прописал Path, но так же без полного пути ни фига не работает…
doza_and
1. Покажите как прописали.
2. shell перезапустили?
3. dir папки в которой лежит исполняемый файл.
Fantoccy
1.


2. Shell да, перезапускал.

3.
doza_and
Попробуйте
1. В консоли где выполняете команды наберите set path сравните с тем что у вас приведено (может пользователь консоли не тот?)
2. 7z вместо zip судя по всему тоже должно работать
3 Попробуйте понять что именно запускается

 import sys
import os
import glob
def Name(fil):
    pathlist = os.environ['PATH'].split(os.pathsep)
    for dr in pathlist:
        print("try ",dr)
        for i in glob.glob(os.path.join(dr,fil)):
            print(i)
Name(r"zip.exe")

Волшебства не бывает. Должно работать.
Fantoccy
…может пользователь консоли не тот?
Doza_and, большое Вам спасибо! У меня есть привычка, ну чтоб не подхватить в интернете всякий триппер, работать под простым пользователем. Вот щас запустил IDLE из-под админа, и все стало ОК.
Кроме того, что не работал Path, еще интерпретатор не понимал пробелы в адресе даже с двойными кавычками. Еще раз спасибо!
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