我glob
用来将文件名提供给这样的循环:
inputcsvfiles = glob.iglob('NCCCSM*.csv')
for x in inputcsvfiles:
csvfilename = x
do stuff here
我用来制作此脚本原型的玩具示例适用于 2、10 甚至 100 个输入 csv 文件,但我实际上需要它来循环 10,959 个文件。当使用这么多文件时,脚本在第一次迭代后停止工作并且无法找到第二个输入文件。
鉴于脚本在“合理”数量的条目(2-100)下工作得非常好,但不是我需要的(10,959)是否有更好的方法来处理这种情况,或者我可以设置的某种参数允许大量迭代?
PS-最初我使用的是glob.glob
,但 glob.iglob fairs 并没有更好。
编辑:
上面的扩展以获得更多上下文......
# typical input file looks like this: "NCCCSM20110101.csv", "NCCCSM20110102.csv", etc.
inputcsvfiles = glob.iglob('NCCCSM*.csv')
# loop over individial input files
for x in inputcsvfiles:
csvfile = x
modelname = x[0:5]
# ArcPy
arcpy.AddJoin_management(inputshape, "CLIMATEID", csvfile, "CLIMATEID", "KEEP_COMMON")
do more stuff after
该脚本在 ArcPy 行失败,其中“csvfile”变量被传递到命令中。报告的错误是找不到指定的csv文件(例如,“NCCSM20110101.csv”),而实际上,csv肯定在目录中。难道你不能像我上面所说的那样多次重用声明的变量(x)吗?同样,如果要 glob'd 的目录只有 100 个左右的文件,这将正常工作,但如果有很多(例如,10,959),它似乎会在列表中的某个地方任意失败。