TypeError: an integer is required 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 2015 年 1 月
输出是:
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_month
和 arg_year
是字符串。您需要将它们显式转换为 int
:
int(arg_month)
您可能需要考虑改用 ArgumentParser,这可以为您简化此操作:
parser = ArgumentParser()
parser.add_argument('month', type=int)
...
args = parser.parse_args()
print(args.month)
这是我的代码:
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 2015 年 1 月
输出是:
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_month
和 arg_year
是字符串。您需要将它们显式转换为 int
:
int(arg_month)
您可能需要考虑改用 ArgumentParser,这可以为您简化此操作:
parser = ArgumentParser()
parser.add_argument('month', type=int)
...
args = parser.parse_args()
print(args.month)