2014-04-04 46 views
0

下午。TypeError:不能连接'str'和'int'对象(Inraster.Append)

我已经被扔到了狼群中,可以说是在蟒蛇的世界里;新工作交给我脚本,并希望我调整它们以适应各种数据集。

这是我修改了代码:

#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

也许应该补充一点,我使用Python 2.6。 – Sesmith926

回答

2

monthint。将其转换为str,然后再与line连接。

date = str(line+str(month)) 

这将消除错误。但我不确定它是否符合程序的逻辑,因为我不知道预期的输出。

+0

输出将MODIS数据中的值提取到点;只是使用给定月份的MODIS值更新.shp文件属性表。 – Sesmith926

0

使用格式字符串

date_str = "{0}{1}".format(line,month) 
2

在Python,+同时做两字符串连接和另外的int S和float秒。

线:

date = str(line+(month)) 

失败,因为表达式:

line+(month) 

尝试使用一个字符串和一个int作为操作数来+。如果你想要做字符串连接,然后使用:

line+str(month) 

此整数month转换为其字符串表示执行字符串连接之前。

整条生产线就变成了:

date = line+str(month)  

“外” str()是多余的,因为RHS已经是一个字符串。

0
for line in fdata: 
    date = str(line+(month)) 
    Inraster1 = ["ma"+date+".modis.tif", date] 
    Inraster.append(Inraster1) 

这样做的一个更Python的方式是:

ext = str(month) + ".modis.tif" 
Inraster = ['{}{}{}'.format("ma", line, ext) for line in fdata] 
相关问题