@alexander1212
хочу изучить Python

Как добавить возможность передавать коду другие файлы и каталоги прямо в командной строке?

изучаю python по книге Byte of Python и немного не понимаю как реализовать следующую задачу:

Ещё одним возможным улучшением была бы возможность передавать сценарию другие файлы и каталоги прямо в командной строке. Эти имена можно получать из списка sys.argv и добавлять к нашему списку source при помощи метода extend класса list.

и вот мой код:
import os, time as t

# Файлы и каталоги, которые необходимо скопировать, собираются в список.

source = ['"C:\\my documents"']

# Резервные копии должны храниться в основном каталоге резерва.

target_dir = 'D:\\backup'

today = os.path.join(target_dir, t.strftime('%Y%m%d'))

if not os.path.exists(today):
    os.mkdir(today) # создание каталога, если он отсутствует
    print('Каталог успешно создан', today)

now = t.strftime('%H%M%S.zip')

comment = input('Введите имя zip архива --> ')

if len(comment) == 0: # Если пользователь ничего не ввел, то имя zip архива - now
    target = os.path.join(today, now)
else:
    target = os.path.join(today, comment.replace(' ', '_') + '.zip')

# Используем команду "zip" для помещения файлов в zip-архив:

zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))

# Запускаем создание резервной копии:

if os.system(zip_command) == 0:
    print('Резервная копия успешно создана в', target)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')

Ценятся развернутые ответы. Всем ответившим огромное спасибо!
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
" Ещё одним возможным улучшением была бы возможность передавать сценарию другие файлы и каталоги прямо в командной строке. Эти имена можно получать из списка sys.argv и добавлять к нашему списку source при помощи метода extend класса list."

Выделение моё.

А вообще, sys.argv хранит список параметров командной строки. 0й всегда содержит путь и имя исполняемого скрипта, а вот последующие задаются пользователем.
В простых случаях можете просто работать с sys.argv как со списком, но если у вас что-то более сложное (типа необязательных аргументов), то смотри в сторону argparse.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект
28 апр. 2024, в 19:54
5000 руб./за проект