【问题标题】:select by attribute in a loop with year and month changing arcpy在循环中按属性选择年和月更改arcpy
【发布时间】:2015-11-24 21:19:24
【问题描述】:

我有如下代码,我想从 torn_all 层中选择日期等于 year_month,例如 2009-12 之后将被选中。所以我应该添加 2009-12%。但是年份和月份在变化。

import arcpy
from arcpy import env

years=['2010','2011','2012','2013']
months=["01","02","03","04","05","06","07","08","09","10","11","12"]



env.workspace="c:/twu/wind/torn/tonardo.gdb"
arcpy.MakeFeatureLayer_management("torn_all", "lyr")

for year in years:
    for month in months:
        arcpy.SelectLayerByAttribute_management("lyr","NEW_SELECTION",' "date" LIKE "%s-%s%"') %(year,month)
        arcpy.CopyFeatures_management("lyr", "c:/twu/wind/torn/tonardo.gdb/torn_%s/torn_%s_%s") %(year,year,month)
        arcpy.SelectLayerByAttribute_management("lyr","CLEAR_SELECTION")

错误是 回溯(最近一次通话最后): 文件“C:/twu/wind/code/sep_month_tor.py”,第 16 行,在 arcpy.SelectLayerByAttribute_management("lyr","NEW_SELECTION",' "date" LIKE "%s-%s%"') %(year,month) SelectLayerByAttribute 中的文件“C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\management.py”,第 6688 行 提高e ExecuteError:错误 000358:无效的表达式 执行失败(SelectLayerByAttribute)。

【问题讨论】:

    标签: select attributes arcpy


    【解决方案1】:

    string formatting 的方法越来越混乱:您尝试同时包含百分号 % 并调用插值运算符 %s。它认为% 正在寻找第三个参数。

    改用string.format()

    '"date" LIKE "{0}-{1}%"'.format(year,month)
    'c:/twu/wind/torn/tonardo.gdb/torn_{0}/torn_{0}_{1}'.format(year,month)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多