簡體   English   中英

TypeError:需要一個整數python

[英]TypeError: an integer is required python

這是我的代碼:

today = datetime.date.today()

if len(sys.argv) > 1:
    arg_month = sys.argv[1]
    arg_year = sys.argv[2]
    print arg_month
    print arg_year
    lastMonth = datetime.date(day=1, month=arg_month, year=arg_year)
    first = lastMonth + datetime.timedelta(month=1)
    lastMonth = lastMonth.strftime("%Y%m")
    curMonth = first.strftime("%Y%m")   
else:
    first = datetime.date(day=1, month=today.month, year=today.year)
    lastMonth = first - datetime.timedelta(days=1)
    lastMonth = lastMonth.strftime("%Y%m")
    curMonth=(time.strftime("%Y%m"))

這就是我運行代碼的方式:python lelan.py 01 2015

輸出是:

01
2015
Traceback (most recent call last):
  File "lelan.py", line 22, in <module>
    lastMonth = datetime.date(day=1, month=arg_month, year=arg_year)
TypeError: an integer is required

如何解決這個問題? 謝謝。

這是因為sys.argv中的參數是字符串。 你需要將它們轉換為整數:

arg_month = int(sys.argv[1])
arg_year = int(sys.argv[2])

從命令行參數獲取的所有項都是字符串; 命令行沒有任何類型系統,也無法區分字符串和其他任何內容。 所以arg_montharg_year是字符串。 您需要明確地將它們轉換為int

int(arg_month)

您可能需要考慮使用ArgumentParser ,這可以為您簡化:

parser = ArgumentParser()
parser.add_argument('month', type=int)
...
args = parser.parse_args()
print(args.month)

暫無
暫無

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

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