尝试从txt.file(PYTHON)获取总和时,输入中出现时间数据错误
我正在尝试制作的程序应该让用户输入开始日期和结束日期,该程序将遍历包含以下信息的txt文件中的列表:尝试从txt.file(PYTHON)获取总和时,输入中出现时间数据错误,python,csv,datetime,error-handling,text-files,Python,Csv,Datetime,Error Handling,Text Files,我正在尝试制作的程序应该让用户输入开始日期和结束日期,该程序将遍历包含以下信息的txt文件中的列表: 1-2-2014,store1,42305.67,23 12-4-2014,store2,21922.22,17 10-2-2015,store3,63277.9,32 10-5-2015,store4,83290.09,16 信息用逗号分隔。第三个数字是代表金钱的数值。例如,如果用户输入(参考上面的txt文件信息示例) 该程序旨在计算从开始日期算起的代表货币的数字,包括介于两个日期之间的数字
1-2-2014,store1,42305.67,23
12-4-2014,store2,21922.22,17
10-2-2015,store3,63277.9,32
10-5-2015,store4,83290.09,16
信息用逗号分隔。第三个数字是代表金钱的数值。例如,如果用户输入(参考上面的txt文件信息示例)
该程序旨在计算从开始日期算起的代表货币的数字,包括介于两个日期之间的数字(如果有)(上面的示例日期,我输入的日期显示中间有一个日期)并打印总金额
程序应该使用txt文件中的任何开始和结束日期输入,如果没有记录,则打印不存在此类记录
下面是两个不同的程序,在其他人的帮助下,我想出了这两个程序,但产生了错误,我希望有人能纠正并指出我的错误
代码1,末尾有错误说明:
from datetime import datetime
def calculate(file_name, s_date, e_date):
dollar = 0
_format = '%d-%m-%Y'
start_date = datetime.strptime(s_date, _format)
end_date = datetime.strptime(e_date, _format)
with open(file_name) as f:
lines = f.readlines()
for line in lines:
l = line.split(',')
date = datetime.strptime(l[0], _format)
if date >= start_date and date <= end_date:
dollar = dollar + float(l[2])
return dollar
start_date = raw_input('Enter start date')
end_date = raw_input('Enter end date')
result = calculate('file.dat', start_date, end_date)
print (result)
ValueError: time data '\n' does not match format '%d-%m-%Y'
from datetime import datetime
begin_date = datetime.strptime(input('Enter start date (dd mm yyyy): '), '%d %m %Y')
end_date = datetime.strptime(input('Enter end date (dd mm yyyy): '), '%d %m %Y')
with open ('data.txt', 'r') as f:
total = 0
for line in f:
strlist = line.rstrip().split(',')
dt = datetime.strptime(strlist[0], '%d %m %Y')
if begin_date <= dt <= end_date:
total+=float(strlist[2].split('$')[1])
print(total)
ValueError: time data '' does not match format '%d %m %Y'
从日期时间导入日期时间
def计算(文件名、s_日期、e_日期):
美元=0
_格式=“%d-%m-%Y”
开始日期=datetime.strTime(s\U日期,\U格式)
end_date=datetime.strtime(e_date,_格式)
打开(文件名)为f时:
行=f.读行()
对于行中的行:
l=行。拆分(',')
date=datetime.strtime(l[0],_格式)
如果日期>=开始日期和日期格式中的日期问题:
%m Month as a zero-padded decimal number.
%d Day of the month as a zero-padded decimal number.
您正在使用此格式,但它们必须包含2位数字
比如01、03、10等等
%m Month as a zero-padded decimal number.
%d Day of the month as a zero-padded decimal number.