类型错误:不能连接'str'和'int'对象(Inraster.Append)
下午好。
我在Python的世界里就像被扔进狼群一样;新工作给了我一些脚本,让我根据不同的数据集来调整它们。
这是我修改过的代码:
#import arcpy module
import arcpy
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "D:\\XXXXX_ET_data"
#Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
#Local variable:
Inpoints = "D:\\XXXXX_ET_data\\XXX_priority_locations_03112014Copy.shp"
fdata = "01,02,03,04,05,06,07,08,09,10,11,12,13"
fdata = fdata.split(",")
#initalizing the list
Inraster = []
#build list of inputs
for month in range (01, 13):
for line in fdata:
date = str(line+(month))
Inraster1 = ["ma"+date+".modis.tif", date]
Inraster.append(Inraster1)
#Process: Extract Multi Values to Points
arcpy.sa.ExtractMultiValuesToPoints(Inpoints, Inraster, "NONE")
arcpy.gp.ExtractMultiValuesToPoints_sa(Inpoints, Inraster, "NONE")
我知道我的错误出在line 21: date = str(line+(month))
这一行,所以我想知道该怎么修复这个问题;提前谢谢你们!
4 个回答
0
使用格式化字符串
date_str = "{0}{1}".format(line,month)
0
for line in fdata:
date = str(line+(month))
Inraster1 = ["ma"+date+".modis.tif", date]
Inraster.append(Inraster1)
ext = str(month) + ".modis.tif"
Inraster = ['{}{}{}'.format("ma", line, ext) for line in fdata]
更符合Python风格的做法是:
2
在Python中,+
这个符号可以用来连接字符串,也可以用来加整数(int
)和浮点数(float
)。
这一行代码:
date = str(line+(month))
出错的原因是:
line+(month)
它试图把一个字符串和一个整数作为+
的操作数。如果你想连接字符串,就应该使用:
line+str(month)
这样做会先把整数month
转换成字符串,然后再进行字符串的连接。
完整的代码行变成:
date = line+str(month)
最外面的str()
其实是多余的,因为右边的部分已经是字符串了。
2
month
是一个整数(int
)。在把它和 line
连接之前,先把它转换成字符串(str
)。
date = str(line+str(month))
这样做就能解决错误了。不过我不太确定这样做是否符合程序的逻辑,因为我不知道预期的输出是什么。