簡體   English   中英

在Python calendar.monthrange中使用變量時出錯

[英]Error when using variable in Python calendar.monthrange

我正在嘗試使用Python calendar.monthrange函數打印一個月中的calendar.monthrange數。

我有一個腳本,該腳本在每個月的1日通過cron運行,並且需要返回上個月的天數。 我還使用箭頭模塊更好地處理和格式化我在整個腳本中使用的任何日期/時間調用。

因為我需要找到上個月的天數,而該天距離腳本運行的日期只有一天了,所以我只需通過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]

前兩個打印行可以正常工作,並顯示正確的年份和月份,但第三行則拋出錯誤:

Traceback (most recent call last):
  File "/home/pi/SystemChecker.py", line 15, in <module>
    print calendar.monthrange(cYfDateY + ',' + cYfDateM)
TypeError: monthrange() takes exactly 2 arguments (1 given)

我不明白為什么告訴我只有一個論點,而顯然有兩個論點。

calendar.monthrange()需要2個參數, yearmonth 在此處查看文檔以了解更多詳細信息:

calendar.monthrange(年,月)

眼前的問題是, monthrange需要兩個參數。 但由於某種原因,您將擁有的兩個參數合並為一個字符串。 不要那樣做 只需傳遞參數即可:

calendar.monthrange(cYfDateY, cYfDateM)

但是,腳本的其余部分也很奇怪。 您正確計算了昨天的日期,但隨后將其轉換為字符串,然后使用第三方arrow庫從該字符串獲取月和日。 這甚至不起作用,因為它們現在是字符串。 你為什么做這個? 為什么不僅僅獲取您已有的月份和日期?

yesterday = date.today() - timedelta(1)   
cYfDateY = yesterday.year
cYfDateM = yesterday.month

更改print calendar.monthrange(cYfDateY + ',' + cYfDateM)[1]
要打印出calendar.monthrange(cYfDateY,cYfDateM)[1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM