动态生成文件名,使输出不至于覆盖原有文件

ArcGIS 脚本防止文件覆盖
本文介绍了一个实用的 ArcGIS Python 脚本技巧,通过动态生成唯一文件名来避免在处理地理空间数据时出现文件覆盖的情况。该方法使用了 `gp.exists` 方法检查文件是否存在,并在必要时为新文件生成唯一的文件名。
# -*- coding: cp936 -*-
#
 动态生成文件名,使输出不至于覆盖原有文件
#
 billschen@163.com
#
 billschen.com
#
 ----------------------------------------------------------
#
 时行arcgis脚本处理,不可减免要生成新的文件(如featu class,
#
 shape file).举个例子:运行Multipart to Singlepart 工具,
#
 将生产生一个新文件,这个工具会“聪明”,产生的新文件的文件名会是一个
#
 “新”的文件名,使旧的文件不至于被覆盖。那个在自己写的脚本中,如何保证
#
 脚本生成的文件不与旧的文件同名呢?可以应用 gp.exists 方法进行文件
#
 是否存在的检查,以下是笔者做的一个小例子,读者可运行一个体验效果。
#
 ----------------------------------------------------------

import os, sys, string
import arcgisscripting
gp 
= arcgisscripting.create()

# 定义需要加载工具箱的路径名称
toolNameList =[r'ArcToolbox\Toolboxes\Data Management Tools.tbx',]

arcGisScriptPath 
= None
arcGisToolPath 
= None

try:
    
# 获得 arcgisscripting.dll 所在的路径,目的是为了取得ArcGis的安装路径
    arcGisScriptPath = arcgisscripting.__file__
    
for toolName in toolNameList:
        arcGisToolPath  
= \
                       arcGisScriptPath.replace( \
                           r
'bin\arcgisscripting.dll', toolName)
        gp.AddToolbox(arcGisToolPath)
except:
    gp.AddMessage(
'无法加载工具箱'+arcGisToolPath+',请检查的你的ArcGis安装是否完整')
    
del gp
    sys.exit()

# 定义一个函数,以获得新的文件名。
#
 以更不去覆盖旧文件。
def GetUnExistsFileName(fromFileName):
    
if not gp.exists(fromFileName):
        
return fromFileName
    
else:
        
for i in range(9999):
            
if not gp.Exists(fromFileName+str(i)):
                
return fromFileName+str(i)
                
break
    
return None

inFC 
= sys.argv[1]
outFC 
= GetUnExistsFileName(inFC+"_singlePart")

gp.MultipartToSinglepart(inFC,outFC)

gp.AddMessage(
'成功执行!')

 

转载于:https://www.cnblogs.com/powermap/archive/2010/05/27/1745591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值