生成日期列表时出错

时间:2017-12-10 19:05:32

标签: python

我有一个python脚本 import urllib2 来自bs4进口BeautifulSoup 导入请求 导入csv 从datetime导入日期时间 从datetime导入日期 来自datetime import timedelta def generateDateList(日期,月份,年份):    今天=日期(年,月,日)    arrDates = []    对于范围内的i(0,5):       arrDates.append(datetime.strftime(今天+ timedelta(天= i),“%d-%m-%y”))    返回arrDates print generateDateList(4,12,2017) 但我得到这个错误 - Traceback(最近一次调用最后一次):   文件“test.py”,第17行,在< module>中     print generateDateList(4,12,2017)   在generateDateList中的第11行文件“test.py”     今天=日期(年,月,日) TypeError:'int'对象不可调用 它为什么失败?我用值替换了函数,它工作正常。我应该再次将函数输入转换为整数吗?

2 个答案:

答案 0 :(得分:2)

这一行 - def generateDateList(date,month,year):

第一个参数date的名称会隐藏在顶部导入的名称date。您需要将参数重命名为函数内的day

如上所述,date实际上是传递给函数的整数,调用它会导致您看到的错误。

答案 1 :(得分:1)

两个选项。

选项No.1(导入日期时间):

import datetime

def generateDateList(date, month, year):
   today = datetime.date(year, month, date)
   arrDates = []
   for i in range(0,5):
      arrDates.append(datetime.datetime.strftime(today + datetime.timedelta(days=i),"%d-%m-%y"))
   return arrDates

print generateDateList(4, 12, 2017)

选项No.2(将日期参数重命名为日期):

from datetime import datetime
from datetime import date
from datetime import timedelta

def generateDateList(day,month,year):
   today = date(year, month, day)
   arrDates = []
   for i in range(0,5):
      arrDates.append(datetime.strftime(today + timedelta(days=i),"%d-%m-%y"))
   return arrDates

print generateDateList(4,12,2017)

问题在于你有一个与date()函数名称相同的参数。