以下代码显示了我必须将输出文件夹声明为全局的第一步,以便以后的输出也可以保存在其中。现在我在输出文件夹字符串r'optfile / ras1'收到错误。任何帮助如何正确地将文件存储在输出文件夹中并将其声明为全局文件将是值得赞赏的。
import arcpy
import os
import pythonaddins
from datetime import datetime
now = datetime.now()
month = now.month
year = now.year
optfile = "C:/temp/"+str(year)+"_"+str(month)
class DrawRectangle(object):
"""Implementation for rectangle_addin.tool (Tool)"""
def __init__(self):
self.enabled = True
self.cursor = 1
self.shape = 'Rectangle'
os.makedirs(optfile)
def onRectangle(self, rectangle_geometry):
"""Occurs when the rectangle is drawn and the mouse button is released.
The rectangle is a extent object."""
extent = rectangle_geometry
arcpy.Clip_management(r'D:/test', "%f %f %f %f" %(extent.XMin, extent.YMin, extent.XMax, extent.YMax), r'optfile/ras1', "#", "#", "NONE")
arcpy.RefreshActiveView()
答案 0 :(得分:1)
我认为您的意思是值r'optfile/ras1'
不使用您的optfile
变量。这是因为Python并没有神奇地阅读你的想法并替换恰好与变量名匹配的字符串部分。
您必须明确使用optfile
变量,方法是将其与/ras1
部分连接:
arcpy.Clip_management(
r'D:/test',
"%f %f %f %f" %(extent.XMin, extent.YMin, extent.XMax, extent.YMax),
optfile + '/ras1', "#", "#", "NONE")
或者更好的是,使用os.path.join()
函数来处理路径分隔符:
import os.path
# ...
arcpy.Clip_management(
r'D:/test',
"%f %f %f %f" %(extent.XMin, extent.YMin, extent.XMax, extent.YMax),
os.path.join(optfile, 'ras1'), "#", "#", "NONE")
请注意,您的问题与全局变量无关;这适用于您要连接的变量来自的任何地方。