在Python中使用变量时出错日历.monthrang

2024-10-06 10:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Pythoncalendar.monthrange函数打印一个月的天数。在

我有一个脚本,通过cron在每个月的1号运行,需要返回上个月的天数。 我还使用arrow模块来更好地处理和格式化我在脚本中使用的任何日期/时间调用。在

因为我需要找出前一个月的天数,它只比运行脚本的日期晚一天,所以我通过timedelta减去1。在

这是我的代码的一个非常精简的版本,但这是工作部分:

import calendar
import arrow
import time
from datetime import date, timedelta

yesterday = date.today() - timedelta(1)

cYfDate = yesterday.strftime('%Y.%m.%d')
cYfDateY = arrow.get(cYfDate).format('YYYY')
cYfDateM = arrow.get(cYfDate).format('M')

print cYfDateY
print cYfDateM

print calendar.monthrange(cYfDateY + ',' + cYfDateM)[1]

前两个打印行工作正常,显示正确的年和月,但第三个打印会抛出错误:

^{pr2}$

我不明白为什么它告诉我只有一个论点,而那里显然有两个论点。在


Tags: import脚本formatgetdatecalendartimedeltaprint
3条回答

更改print calendar.monthrange(cYfDateY + ',' + cYfDateM)[1]
到`print日历.monthrange(cYfDateY,cYfDateM)[1]

calendar.monthrange()接受2个参数,year和{}。有关详细信息,请参阅此处的文档:

calendar.monthrange(year, month)

直接的问题是monthrange需要两个参数;但是由于某种原因,您将使用您拥有的两个参数并将它们连接到一个字符串中。不要这样做;只要传递参数:

calendar.monthrange(cYfDateY, cYfDateM)

不过,剧本的其余部分也很奇怪。您正确地计算了昨天的日期,但随后将其转换为字符串,然后使用第三方arrow库从该字符串中获取月份和日期。这根本行不通,因为现在这些都是弦了。你为什么这么做?为什么不直接得到你已经拥有的月份和日期呢?在

^{pr2}$

相关问题 更多 >