Страница 2 из 2
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:11
Ariki
В консоли хотя бы так попробуйте (выделив несколько объектов):
Код: Выделить всё
qgis.utils.iface.activeLayer().selectedFeatures()[0].attributeMap()[1].toString()
У меня в 1.7.4 все нормально
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:17
Cathrin
как ввести в консоль фор?
если в неё только построчно можно вводить
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:22
Denis Rykov
С чего ради только построчно. Пишите сначала, например, "for a in [1,2,3]:" затем нажимаете Enter, переходите на следующую строку, появляются три точки: "...", делаете обязательный в python отступ (например, 4 пробела) вводите строку кода и снова нажимаете Enter, если эта строка тоже должна быть выполнена внутри цикла for, то опять набиваете отступ, код и жмёте Enter, если на этом ваш цикл закончем, то опять Enter и он будет выполнен.
Код: Выделить всё
>>> for a in [1,2,3]:
... print a
...
1
2
3
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:30
Cathrin
Код: Выделить всё
>>> for feat in feats:
... attrs = feat.attributeMap()
... for (k,attr) in attrs.iteritems():
... if k in [0,1,2]:
... f.write("%d: %s" % (k,attr.toString()))
...
>>> f.close()
File "<input>", line 1
f.close()
^
IndentationError: unexpected indent
вот такое дело вылетает
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:34
Ariki
Запустил ваш HelloWorld на QGIS 1.7.4. Вывод примерно такой:
Если у вас так же, то все ОК. Неплохо бы вставить разделитель (скажем, \n) в конец строки формата
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 11:39
Ariki
На f.close() у вас лишний пробел в отступе, разве сами не видите?
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 13:16
Cathrin
0: 31: 1812: 0580: 31: 11102: 059
да,всё равно выводит лишнюю двойку
Re: неправильный вывод атрибутов
Добавлено: 08 июн 2012, 13:26
Ariki
Это не лишняя двойка, это номер вашего атрибута
Код: Выделить всё
f.write("%d: %s\n" % (k, attr.toString()))
Так понятнее?
Re: неправильный вывод атрибутов
Добавлено: 09 июн 2012, 05:19
Denis Rykov
2Cathrin
Я же вам сразу написал
вариант с переносом строк ещё вчера.
Re: неправильный вывод атрибутов
Добавлено: 09 июн 2012, 09:15
Cathrin
я пишу с переносом строки,так же как вы и мне написали до этого
но он всё равно выводит так же...
я уже увидела что это номера атрибутов
0: 31: 5382: 080
вот результат вывода
но как мне его убрать?
Re: неправильный вывод атрибутов
Добавлено: 09 июн 2012, 09:22
Ariki
А операционная система какая? Если Windows, возможно, следует завершать строку комбинацией "\r\n". Хотя у меня в Windows 7 Блокнот и так нормально отображает Python сам добавляет CR перед LF.
Re: неправильный вывод атрибутов
Добавлено: 09 июн 2012, 10:13
Cathrin
10 минут назад,до вашего поста,я именно так и попробовала)
всё заработало!
спасибо))
Re: неправильный вывод атрибутов
Добавлено: 09 июн 2012, 14:15
Ariki
А я теперь ломаю голову, почему у меня Python ведет себя неправильно, добавляя CR перед LF при выводе в файл. Не должен он делать этого.
PEP 278
Преобразование должно осуществляться только при чтении.
Проверил на двух компьютерах с Python 2.5 и 2.6 - на обоих такая ситуация. Единственное, что смущает - на обоих Python установлен в составе ArcGIS. Может, это Esri так патчит Python под себя?