Мне была поставлена неоднозначная задача по автоматизации извлечения данных из различных таблиц Visual FoxPro.
Существует несколько пар файлов .DBF
и .CDX
.С пакетом Python dbf мне кажется, что я могу работать с ними.У меня есть два файла, ABC.DBF
и ABC.CDX
.Я могу загрузить файл таблицы, используя
>>> import dbf
>>> table = dbf.Table('ABC.DBF')
>>> print(table[3])
0 - table_key : '\x00\x00\x04'
1 - field_1 : -1
2 - field_2 : 0
3 - field_3 : 34
4 - field_ 4 : 2
...
>>>
Насколько я понимаю, .cdx
файлы являются индексами.Я подозреваю, что это соответствует полю table_key
. По словам автора , dbf
может читать индексы:
Я могу читать файлы IDX, но не обновлять их.Моя дневная работа изменилась, и файлы dbf не являются большой частью нового.- Итан Фурман 26 мая 16 года в 21: 05
Чтение - это все, что мне нужно сделать.Я вижу, что существует четыре класса: Idx
, Index
, IndexFile
и IndexLocation
.Это похоже на хороших кандидатов.
Класс Idx
читает таблицу и имя файла, что многообещающе.
>>> index = dbf.Idx(table, 'ABC.CDX')
Хотя я не уверен, как использовать этот объект.Я вижу, что у него есть некоторые генераторы backward
и forward
, но когда я пытаюсь их использовать, я получаю сообщение об ошибке
>>> print(list(index.forward()))
dbf.NotFoundError: 'Record 67305477 is not in table ABC.DBF'
Как связать индексный файл .cdx
с .dbf
стол?