Здравствуйте!
Версия ОС Windows 10
Версия ГИС Аксиома 5.2.1
Была поставлена задача - прочесть список атрибутов открытой таблицы.
Прописал команды:
path_to_file = open_file_dialog("MapInfo Tab (*.tab)")
table = provider_manager.openfile(str(path_to_file))
attributes = table.schema()
Получил исключение:
Unhandled Python Exception:
...
attributes = table.schema()
TypeError: 'Schema' object is not callable
В PyCharm метод schema() не отображается в списке после точки (table.).
Подскажите, пожалуйста, как правильно прописать команды для получения списка атрибутов открытой таблицы.
Список атрибутов
- Владимир В
- Сообщения: 22
- Зарегистрирован: 25 мар 2024, 09:54
- Владимир В
- Сообщения: 22
- Зарегистрирован: 25 мар 2024, 09:54
Re: Список атрибутов
Решение найдено. Надо было прописать как свойство: attributes = table.schema.
Re: Список атрибутов
Доброго времени суток !
Владимир , я на те же грабли наступил относительно атрибутов. Вы помогли с этой проблемой.
P.S.
Это в руководстве :
Схему таблицы можно получить, используя свойство schema.
Например:
schema = table.schema()
Ох и дурят нашего брата .... Бамбарбия ,кергуду.
Владимир , я на те же грабли наступил относительно атрибутов. Вы помогли с этой проблемой.
P.S.
Это в руководстве :
Схему таблицы можно получить, используя свойство schema.
Например:
schema = table.schema()
Ох и дурят нашего брата .... Бамбарбия ,кергуду.
Re: Список атрибутов
Ошибку в документации исправили.
Конечно, должно быть:
Код: Выделить всё
schema = table.schema
Метод provider_manager.openfile() возвращает объект типа DataObject.Владимир В писал(а): ↑25 мар 2024, 16:31 В PyCharm метод schema() не отображается в списке после точки (table.).
Подскажите, пожалуйста, как правильно прописать команды для получения списка атрибутов открытой таблицы.
У DataObject отсутствует свойство schema, поэтому PyChram не может его отобразить. Свойство schema есть у Table, который является наследником DataObject. Это не является проблемой и код будет работать.
Но если Вы хотите чтобы PyCharm мог отобразить соответствующее свойство, необходимо чтобы он корректно определил тип переменной.
Сделать это можно например так:
Code: Select all
import axipy as axp
path_to_file = axp.open_file_dialog("MapInfo Tab (*.tab)")
table = axp.provider_manager.openfile(str(path_to_file))
if isinstance(table, axp.Table):
# В этот момент PyCharm может определить тип переменной
attributes = table.schema
Code: Select all
import axipy as axp
path_to_file = axp.open_file_dialog("MapInfo Tab (*.tab)")
table = axp.provider_manager.tab.open(str(path_to_file))
attributes = table.schema