как добавить возможность передавать коду другие файлы и каталоги прямо в командной строке?
изучаю 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('Создание резервной копии НЕ УДАЛОСЬ')
Ценятся развернутые ответы. Всем ответившим огромное спасибо!
Ответы (1 шт):
Автор решения: МаксимМ
→ Ссылка
import argparse
def createParser (): # парсер аргументов коммандной строки
parser = argparse.ArgumentParser()
parser.add_argument ('-arg', '--argument')
return parser
parser = createParser()
namespace = parser.parse_args(sys.argv[1:])
print(namespace.argument) # отобразит значение аргумента, в данном случае file.txt
Скрипт вызывать так:
python script.py -arg file.txt