Python 如何将要素类的坐标值输出到文本文件

Python 如何将要素类的坐标值输出到文本文件,python,coordinate,arcmap,Python,Coordinate,Arcmap,数据库中有要素类列表。以下代码可以成功打印要素类中每个要素的每个点的x、y。注释部分不工作,我不知道如何将点的坐标值写入文本文件 arcpy.env.workspace = 'database' fc='file1' outpath='output Directory' cursor=arcpy.da.SearchCursor(fc, ["OID@","SHAPE@"]) #output=open("result.txt","w") for row in cursor: #iterate th

数据库中有要素类列表。以下代码可以成功打印要素类中每个要素的每个点的x、y。注释部分不工作,我不知道如何将点的坐标值写入文本文件

arcpy.env.workspace = 'database'
fc='file1'
outpath='output Directory' 
cursor=arcpy.da.SearchCursor(fc, ["OID@","SHAPE@"])
#output=open("result.txt","w")
for row in cursor: #iterate the rows in the table
    print ("Feature {0}: ".format(row[0]))
    for point in row[1].getPart(0):
        print ("{0},{1}".format(point.X, point.Y))  
        #output.write(str(point.X)+""+str(point.Y)+"\n")
        #read_data = output.read()
        #print read_data
#output.close()
感谢您的帮助

新代码如下所示:

arcpy.env.workspace = 'database'
fc='file1'
outpath='output Directory' 
cursor=arcpy.da.SearchCursor(fc, ["OID@","SHAPE@"])
with open('result.txt', 'w') as output:
    for row in cursor: #iterate the rows in the table
        for point in row[1].getPart(0):
            output.write(str(point.X)+""+str(point.Y)+"\n")
            print os.path.isfile('result.txt')
output.close()

好的,我用我自己的python会话检查了这一点,显然,向文件中写入内容的方法是。下班后关闭它。取消对代码的注释并编写:

output.close()
……之后。不知何故,根据使用with语句处理文件的更好方法是:

>>> with open('workfile', 'r') as output:
...     read_data = output.read()
>>> output.closed
True
在您的情况下,在缩进处用open编写下面的代码。 希望有帮助

编辑: 上面的with语句只是python文档中的一个示例。 在你的情况下,我建议尝试:

arcpy.env.workspace = 'database'
fc='file1'
cursor=arcpy.da.SearchCursor(fc, ["OID@","SHAPE@"])
with open('result.txt', 'w') as output:
    for row in cursor: #iterate the rows in the table
        print ("Feature {0}: ".format(row[0]))
        for point in row[1].getPart(0):
            print ("{0},{1}".format(point.X, point.Y))  
            output.write(str(point.X)+""+str(point.Y)+"\n")

我在forloop之外添加了code output.close,它没有引发任何错误,但在目录中也没有创建任何文本文件。还有什么需要修理的吗?此外,我认为你给出的With语句不适合这里,它似乎使用了“r”而不是“w”。你能具体说明一下吗?Tksoutput=open'result.txt',w'文件后,应立即创建result.txt文件,因为这是python的正常行为-如果文件存在,请使用它,如果不存在,请创建它。检查上面编辑的答案,如果没有帮助的话,肯定还有其他一些我目前看不到的明显解释。我使用了你的代码,它也没有创建文件。当我尝试使用以下代码打印输出:read_data=output.read print read_data,它只是说文件未打开读取。所以我想我不知道如何检查输出。无论如何,我也很困惑,在输出目录中没有创建任何文件。当你关闭文件时,你无法读取它。若要在以写模式关闭文件后读取该文件,则必须以r模式打开该文件进行读取。尽管如此,我不知道python为什么不为您创建文件——对我来说,它工作得非常好。请看编辑,我在对其进行写入后,正在forloop中读取它。不管怎样,问题是它不会创造任何东西。此外,它也不会给出任何错误。看来我需要进一步调查才能找到答案。但是我需要帮助