求助,怎么运用Python脚本批量替换mxd文件中的文本?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,怎么运用Python脚本批量替换mxd文件中的文本?相关的知识,希望对你有一定的参考价值。
如题,求助,怎么运用Python脚本批量替换mxd文件中的文本?
好比多个mxd文件中都有个文本“2013年9月10日”,现在要改成“2012年12月10日”
#Read input parameters from script tool
Path = arcpy.GetParameterAsText(0)
oldText = arcpy.GetParameterAsText(1)
newText = arcpy.GetParameterAsText(2)
case = arcpy.GetParameter(3)
exact = arcpy.GetParameter(4)
outputMXD = arcpy.GetParameterAsText(5)
try:
#Referent the map document
mxd = arcpy.mapping.MapDocument(mxdPath)
#Find all page layout text elements
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if exact:
if case:
if oldText == elm.text:
elmText = elm.text.replace(oldText, newText)
elm.text = elmText
else:
if oldText.upper() == elm.text.upper():
elmText = elm.text.upper().replace(oldText, newText)
elm.text = elmText
else:
if case:
if oldText in elm.text:
elmText = elm.text.replace(oldText, newText)
elm.text = elmText
else:
if oldText.upper() in elm.text.upper():
elmText = elm.text.upper().replace(oldText, newText)
elm.text = elmText
mxd.saveACopy(outputMXD)
del mxd
except Exception, e:
import traceback
map(arcpy.AddError, traceback.format_exc().split("\\n"))
arcpy.AddError(str(e))追问
你好,这段代码怎么运行呢,我还是个新手,能讲一下具体怎么使用吗?
参考技术A 这个,是在文件系统中寻找mxd文件。类似walk的函数第二个,是针对每个文件,用正则表达式匹配。不过可能字符串编码也要注意。具体的你要调试了 参考技术B files = ['a.mxd', 'b.mxd']
def readit(fn):
with open(fn) as f:
return f.read()
def writeto(fn, s):
with open(fn, 'w') as f:
f.write(s)
for fn in files:
writeto(fn, readit(fn).replace(“2013年9月10日”, “2012年12月10日”))
以上是关于求助,怎么运用Python脚本批量替换mxd文件中的文本?的主要内容,如果未能解决你的问题,请参考以下文章