Форум сайта python.su
Эта программа которая создаёт резервные
копии всех наших важных файлов.
import os
import time
# 1. Файлы и каталоги, которые необходимо скопировать, собираются в список.
source = ‘“/media/admin/Новый том/myfiles”’
# Заметьте, что для имён, содержащих пробелы, необходимо использовать
# двойные кавычки внутри строки.
# 2. Резервные копии должны храниться в основном каталоге резерва.
target_dir = ‘/media/admin/Новый том/fileback’
# Подставьте тот путь, который вы будете использовать.
# 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('Создание резервной копии НЕ УДАЛОСЬ')
система ubuntu
python 3.4.4
строка: os.mkdir(today)
Ошибка: FileNotFoundError: Не найден файл или директория.
В чем проблема?
Отредактировано cjd (Янв. 7, 2017 10:37:09)
Офлайн
mkdir создает только один уровень каталогов в дереве файловой системы.
То есть так можно
os.mkdir("existing_dir/new_dir")
os.mkdir("existing_dir/new_dir1/new_dir2")
Отредактировано FishHook (Янв. 7, 2017 10:48:19)
Офлайн
Мне нужно, чтобы создавал несколько уровней каталогов в дереве файловой системе.
Как это можно сделать?
Офлайн
os.makedirs
Офлайн
Каталог успешно создан “/media/admin/Новый том/fileback/20170107”
zip I/O error: No such file or directory
zip error: Could not create output file (/media/admin/Новый том/fileback/20170107/113115.zip)
Создание резервной копии НЕ УДАЛОСЬ
Ошибочка!
Офлайн
Для начала уберите из путей вот это
cjdпопробуйте с одним словом латиницей
Новый том
Офлайн
FishHook
попробуйте с одним словом латиницей
Офлайн
Чего?
Вам нужно убрать кириллицу из путей и не использовать пробелы, чего тут невозможного?
Офлайн
То есть писать Novii_tom ?
Либо я слишком тупой, либо вы непонятно говорите.
Офлайн
да, писать Novii_tom.
Офлайн