打开多个文件,剥离名称并在计算后保存

时间:2014-08-28 19:46:13

标签: python arcgis

我有一个包含一些栅格文件的文件夹,如下所示:us_ppt_1971_2000_01.asc,us_tmax_1971_2000_02.asc,us_tmin_1971_2000_03.asc,...

我想从输入文件夹中打开这些文件,根据每个文件进行一些计算,并将结果保存在输出文件夹中。

所有代码都运行正常,如果我为每个输入文件创建一个包含我想要的新名称的字典,我甚至可以保存结果。但我永远不知道哪个输入文件以哪个名称保存。

所以现在我想打开每个文件,进行计算,然后使用从输入文件名中删除的较短名称保存新文件,比如“ppt_01”,这样我就能识别出来。

以下代码正在运行,但随机保存文件,这意味着,ppt保存为tmax或tmin与ppt相同:

import ...
workDirectory="I:\\PRISM\\M stuff"
inputDirectory=workDirectory+"\\in"
inputDirectoryPrism=workDirectory+"\\in\\prism"
resultsDirectory=workDirectory+"\\results" 
...
...

maps = ["PP1", "PP2", "PP3", "PP4", "PP5", "PP6", "PP7", "PP8", "PP9",  "PP10", "PP11", "PP12",
        "TMX1", "TMX2", "TMX3", "TMX4", "TMX5", "TMX6", "TMX7", "TMX8", "TMX9",  "TMX10", "TMX11", "TMX12",
        "TMN1", "TMN2", "TMN3", "TMN4", "TMN5", "TMN6", "TMN7", "TMN8", "TMN9",  "TMN10", "TMN11", "TMN12"]

nr=0

for file in glob.glob( os.path.join(inputDirectoryPrism, '*.asc') ):                                                
        ...
        some calculations
        ...
        # Process: Zonal Statistics as Table    
        # THIS IS WHERE I SAVE MY FILE
        arcpy.gp.ZonalStatisticsAsTable_sa(outputDirectory+"\\subcat_diss_shp.shp", "GRIDCODE", outputDirectory+"\\us_ppt_di", resultsDirectory+"\\"+maps[nr]+".dbf", "DATA", "MEAN")   
        nr = nr + 1

这是我正在尝试的代码,但它给出了错误“工作区是无效的输出工作区”:

import ...
workDirectory="I:\\PRISM\\M stuff"
inputDirectory=workDirectory+"\\in"
inputDirectoryPrism=workDirectory+"\\in\\prism"
resultsDirectory=workDirectory+"\\results" 
...
...

nr=0

for file in glob.glob( os.path.join(inputDirectoryPrism, '*.asc') ):                                                
        name1 = file[3:]
        name2= name1[:-16]
        name3= file[17:]
        name4=name3[:-3]
        ...
        some calculations
        ...
        # Process: Zonal Statistics as Table    
        # THIS IS WHERE I SAVE MY FILE          
        arcpy.gp.ZonalStatisticsAsTable_sa(outputDirectory+"\\subcat_diss_shp.shp", "GRIDCODE", outputDirectory+"\\us_ppt_di", resultsDirectory+"\\"+name2+name4[nr]".dbf", "DATA", "MEAN") 
        nr = nr + 1

看起来像resultsDirectory +“\”+ name2 + name4 [nr]“。dbf”不是存储文件的好方法。

任何帮助都将受到高度赞赏。

谢谢!

0 个答案:

没有答案