Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 20, 2017 12:51:26

Fantoccy
Зарегистрирован: 2017-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

Начал изучать язык по книге “Укус Питона” 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('Создание резервной копии НЕ УДАЛОСЬ')

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


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


Офлайн

#2 Фев. 20, 2017 13:29:25

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2583
Репутация: +  60  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

без понятия!
Если в CMD ввести руками то что выводится вам “print(zip_command)”
Что будет?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Фев. 20, 2017 13:29:27

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2583
Репутация: +  60  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Фев. 20, 2017 13:30:07)

Офлайн

#4 Фев. 20, 2017 23:15:04

Fantoccy
Зарегистрирован: 2017-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

При вставке в командную строку пишет “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('Создание резервной копии НЕ УДАЛОСЬ')

Офлайн

#5 Фев. 21, 2017 06:20:17

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

Создание переменной окружения zip ничего не меняет. Менять надо переменную окружения path



Офлайн

#6 Фев. 21, 2017 09:34:49

Fantoccy
Зарегистрирован: 2017-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

Прописал Path, но так же без полного пути ни фига не работает…

Офлайн

#7 Фев. 21, 2017 19:50:23

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

1. Покажите как прописали.
2. shell перезапустили?
3. dir папки в которой лежит исполняемый файл.



Офлайн

#8 Фев. 24, 2017 15:20:56

Fantoccy
Зарегистрирован: 2017-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

1.


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

3.

Офлайн

#9 Фев. 24, 2017 16:46:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

Попробуйте
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")

Волшебства не бывает. Должно работать.



Офлайн

#10 Фев. 24, 2017 20:46:39

Fantoccy
Зарегистрирован: 2017-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Программа, которая создаёт резервные копии файлов.

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version