Python 2.7 :我正在尝试创建一个方法,检查输入时间是否符合YYYY-MM-DD
格式。如果日期不是按照给定的格式,请发送用户自定义消息"请将格式更改为YYYY-MM-DD" 。如果日期符合格式,请检查它是否大于今天的日期,如果不再发送用户自定义消息。在所有情况下,我只需要发出自定义消息的方法,而不是破坏程序。
def validate_timeline(time):
try:
datetime.datetime.strptime(time, '%Y-%m-%d')
try:
time = datetime.datetime.strptime(time, '%Y-%m-%d')
dat = datetime.datetime.today()
if dat > time:
print("Please enter the future date")
raise Exception("Choose the date greater than today's date")
except ValueError:
raise ValueError("Incorrect date format, should be YYYY-MM-DD")
except ValueError:
raise ValueError("Incorrect date format, should be YYYY-MM-DD")
我仍然收到带有自定义消息的默认异常消息。
Exception !! Incorrect date format, should be YYYY-MM-DD Traceback :
Traceback (most recent call last):
File "My_file.py", line 511, in <module>
validate_timeline(time)
File "My_file.py", line 62, in validate_timeline
raise ValueError("Incorrect date format, should be YYYY-MM-DD")
ValueError: Incorrect date format, should be YYYY-MM-DD
期望的输出:
Enter the command: set timeout 2017-09- to file
"Incorrect date format, should be YYYY-MM-DD"
Enter the command:
这里程序应该要求再次输入命令(raw_input),不应该退出程序。
码
elif(condition):
lis = opt.split()
timeline = lis[2]
user = lis[4]
grp = lis[7]
validate_timeline(timeline)
with open("test.txt","r") as f:
答案 0 :(得分:1)
你raise
例外的方式似乎很好。问题可能出在呼叫方面。如果您不希望打印这些堆栈跟踪并且程序崩溃,您必须自己处理异常并打印它。
cmd = input("Enter the command:")
try:
validate_timeline(cmd)
# do other things
except ValueError as e:
print(e)
示例输出:
Enter the command: not a real date
Incorrect date format, should be YYYY-MM-DD
答案 1 :(得分:0)
不要提出这些特定的异常,而是编写自定义消息以继续执行程序
def validate_timeline(time):
try:
datetime.datetime.strptime(time, '%Y-%m-%d')
try:
time = datetime.datetime.strptime(time, '%Y-%m-%d')
dat = datetime.datetime.today()
if dat > time:
print("Please enter the future date")
#raise Exception("Choose the date greater than today's date")
except ValueError:
#raise ValueError("Incorrect date format, should be YYYY-MM-DD")
print("Incorrect date format, should be YYYY-MM-DD")
except ValueError:
#raise ValueError("Incorrect date format, should be YYYY-MM-DD")
print("Incorrect date format, should be YYYY-MM-DD")