Быстрый, но грубый способ - использовать sys.argv
.
import sys
xDate = sys.argv[1]
Более надежный и расширяемый способ - использовать модуль argparse :
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('xDate')
args=parser.parse_args()
Затем для доступа к пользовательскому значению вы будете использовать args.xDate
вместо xDate
.
Используя модуль argparse
, вы автоматически получаете бесплатное сообщение справки, когда пользователь вводит
delete_images.py -h
Также выдает полезное сообщение об ошибке, если пользователь не может ввести правильные данные.
Вы также можете легко установить значение по умолчанию для xDate
, преобразовать xDate
в datetime.date
объект и, как говорят по телевизору, «намного, намного больше!».
Я вижу позже в вашем скрипте вы используете
expDate = time.strptime(xDate, '%Y-%m-%d')
для преобразования строки xDate
в кортеж времени. Вы можете сделать это с argparse
, так что args.xDate
автоматически будет кортежем времени. Например,
import argparse
import time
def mkdate(datestr):
return time.strptime(datestr, '%Y-%m-%d')
parser=argparse.ArgumentParser()
parser.add_argument('xDate',type=mkdate)
args=parser.parse_args()
print(args.xDate)
при запуске так:
% test.py 2000-1-1
выходы
time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=-1)
PS. Какой бы метод вы ни выбрали (sys.argv или argparse), было бы неплохо потянуть
expDate = time.strptime(xDate, '%Y-%m-%d')
за пределами for-loop
. Поскольку значение xDate
никогда не меняется, вам нужно вычислить expDate
только один раз.