我有一个菜单,我在其中输入开始日期和结束日期。当我在下面的菜单项中选择选项2时出现错误。
### Take action as per selected menu-option ###
if choice == 1: # Start with default window
print ("Starting Backtest from 2014-1-1 until 2015-12-31")
start = datetime.datetime(2014,1,1)
start = start.date()
end = datetime.datetime(2015,12,31)
end = end.date()
elif choice == 2:
## Get input ###
start = input('Enter Start date [Format: YYYY,M,D - 2014,1,23] : ')
start = datetime.datetime(start)
start = start.date()
end = input('Enter End date [Format: 2015,8,23] : ')
end = datetime.datetime(end)
end = end.date()
我的菜单项1是如何工作的,但是2却没有?
错误是
TypeError: an integer is required (got type str)
请帮忙
由于
答案 0 :(得分:0)
您可能会收到该错误,因为您正在将字符串与整数进行比较。您可以在两者之间进行更改
>>> int('123')
>>> 123
>>> str(123)
>>> '123'
答案 1 :(得分:0)
好的 - 经过一番搜索后,我发现这个问题帮我找到了正确的答案。 TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text'
所以我需要这段代码来让我的脚本顺利运行。在选择2下,您会看到带有strptime和strftime的新代码。显然我需要通过strptime才能进入strftime!
### Take action as per selected menu-option ###
if choice == 1: # Start with default window
print ("Starting Backtest from 2014-1-1 until 2015-12-31 (2 years)")
start = datetime.datetime(2014,1,1)
start = start.date()
end = datetime.datetime(2015,12,31)
end = end.date()
elif choice == 2:
## Get input ###
start_input = input('Enter Start date [Format: YYYY,M,D - 2014,01,23] : ')
start_dt_obj = datetime.datetime.strptime(start_input, '%Y,%m,%d')
start = datetime.datetime.strftime(start_dt_obj, '%Y,%m,%d')
end_input = input('Enter End date [Format: YYYY,M,D - 2015,08,23] : ')
end_dt_obj = datetime.datetime.strptime(end_input, '%Y,%m,%d')
end = datetime.datetime.strftime(end_dt_obj, '%Y,%m,%d')
然而,这使我的代码运行,但我想将日期保留为日期。选择2代码将我的日期保存为不同于选择1的str。嗯...