2014-11-10 4 views
0

В базе данных есть список классов объектов. приведенные ниже коды могут успешно распечатать x, y каждой точки каждой функции в классе объектов. часть комментария не работает, и я не знаю, как записать значения координат точек в текстовый файл.как выводить значения координат класса объектов в текстовый файл

arcpy.env.workspace = 'database' 
fc='file1' 
outpath='output Directory' 
cursor=arcpy.da.SearchCursor(fc, ["[email protected]","[email protected]"]) 
#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, ["[email protected]","[email protected]"]) 
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() 

ответ

0

Хорошо, я проверил это с моей сессией питона, и, по-видимому, как написать что-то файл является .close() его после работы. Раскомментируйте свой код и напишите:

output.close() 

... после этого. Так или иначе, даже лучший способ работы с файлами (в соответствии с python's documentation) используется с утверждением:

>>> with open('workfile', 'r') as output: 
...  read_data = output.read() 
>>> output.closed 
True 

В вашем случае, написать код ниже «с открытым» в отступом месте. Надеюсь, это помогло.

Редактировать: Это утверждение, приведенное выше, является просто примером из документации python. В вашем случае я предлагаю попробовать:

arcpy.env.workspace = 'database' 
fc='file1' 
cursor=arcpy.da.SearchCursor(fc, ["[email protected]","[email protected]"]) 
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") 
+0

Я добавил код output.close() вне forloop и оно не поднимать какую-либо ошибку, но не текстовый файл был создан в каталоге либо. Нужно ли еще исправлять? Также я думаю, что заявление With, которое вы дали, не вписывается здесь, кажется, что оно использует «r» не «w». не могли бы вы также указать это? tks – widget

+0

Ваш файл result.txt должен быть создан, как только вы напишете файл output = open ('result.txt', 'w'), потому что AFAIK это обычное поведение python - если файл существует, работайте с ним, если нет - создайте его. Проверьте отредактированный ответ выше, если это не поможет, должно быть какое-то другое очевидное объяснение, которое я сейчас не вижу. – erhesto

+0

Я использовал ваши коды, и он также не создает файл. для печати вывода с использованием кодов: read_data = output.read() print read_data, он просто говорит, что файл не открыт для чтения. Поэтому я думаю, что я не знаю, как проверить вывод. В любом случае меня тоже путают, что файлы не создаются в outputirectc – widget

Смежные вопросы