0

以下代码显示了我必须将输出文件夹声明为全局的第一步,以便以后的输出也可以保存在其中。现在我在输出文件夹字符串 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()
4

1 回答 1

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")

请注意,您的问题与全局变量无关;这适用于您要连接的变量来自何处。

于 2013-01-26T15:41:17.997 回答