Type error: 'int' object has no attribute. python int(raw_input())

Type error: 'int' object has no attribute. python int(raw_input())

我正在使用 python 2.7,arcpy 确实做了一些数据管理。

我正在尝试创建一个脚本来询问用户数据来自哪一年,以便生成文件路径。

while True:
    try:
        year =  int(raw_input("What state fiscal year is this for (yyyy)? "))
    except ValueError:
        print("Are you daft?!")
        continue
    if year < 2017:
        print("Sorry tool is only compatible with post 2017 files")
    elif year > 2030:
        print("Someone needs to update the script... it's been over a decade since inception!")
    else:
        print("Party on!")
        break
scriptpath = os.getcwd()

下一行是用户输入进入文件路径的地方,也是抛出错误的行:

    folder = "OARS Raw Data\OARS S_FY{0}".format(year[2:])
Type error: 'int' object has no attribute '__ getitem __'

是什么导致它不拉年值? 我试过分配另一个变量:year1 = year 在脚本路径和文件夹行之间,但仍然出现类型错误。

我应该提到当我在没有 while 循环的情况下分配年份时文件夹行有效。 year = "2018"

要使用切片,您需要先将其转换为字符串(例如):

folder = "OARS Raw Data\OARS S_FY{0}".format(str(year)[2:])

或者只取 100 中的 mod 作为最后两个数字:

folder = "OARS Raw Data\OARS S_FY{0}".format(year%100)

year 是整数,不是字符串。您不能对整数进行切片:

>>> year = 2018
>>> year[2:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable

首先将对象转换为字符串,str(year)[2:] 可以,使用整数运算只得到最后两位:

folder = "OARS Raw Data\OARS S_FY{0:02}".format(year % 100)

year % 100 将年的剩余时间除以 100;所以最后两位数:

>>> year % 100
18

请注意,我也更新了字符串模板,通过添加 :02 任何小于 10 的整数仍然添加了前导 0

>>> 'year: {0:02}'.format(9)
'year: 09'