下午。
我被扔到了狼群中,所以在蟒蛇世界里说话;新工作递给我脚本,并希望我调整它们以适应各种数据集。
这是我修改过的代码:
#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))
,所以我想知道如何解决这个问题;提前谢谢!
答案 0 :(得分:2)
month
是int
。在将其与str
连接之前,将其转换为line
。
date = str(line+str(month))
这将消除错误。但我不确定它是否符合程序的逻辑,因为我不知道预期的输出。
答案 1 :(得分:2)
在Python中,+
执行字符串连接以及添加int
和float
s。
该行:
date = str(line+(month))
失败是因为表达式:
line+(month)
尝试使用字符串和int
作为+
的操作数。如果要进行字符串连接,请使用:
line+str(month)
这会在执行字符串连接之前将整数month
转换为其字符串表示形式。
完整的一行变为:
date = line+str(month)
“外部”str()
是多余的,因为RHS已经是一个字符串。
答案 2 :(得分:0)
使用格式字符串
date_str = "{0}{1}".format(line,month)
答案 3 :(得分:0)
for line in fdata:
date = str(line+(month))
Inraster1 = ["ma"+date+".modis.tif", date]
Inraster.append(Inraster1)
这样做的更加pythonic方式是:
ext = str(month) + ".modis.tif"
Inraster = ['{}{}{}'.format("ma", line, ext) for line in fdata]