I have been given an ambiguous task of automating a data extraction from various Visual FoxPro tables.
There are several pairs of .DBF and .CDX files.  With the Python dbf package, I seem to be able to work with them.  I have two files, an ABC.DBF and an ABC.CDX.  I can load the table file using,
>>> 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
  ...
>>>
It's my understanding that .cdx files are indexes.  I suspect that corresponds to the table_key field.  According to the author, dbf can read indexes:
I can read IDX files, but not update them. My day job changed and dbf files are not a large part of the new one. – Ethan Furman May 26 '16 at 21:05
Reading is all I need to do.  I see that four classes exist, Idx, Index, IndexFile, and IndexLocation.  These seem like good candidates.  
The Idx class reads in a table and filename, which is promising.
>>> index = dbf.Idx(table, 'ABC.CDX')
I'm not sure how to make use of this object, though.  I see that it has some generators, backward and forward, but when I try to use them I get an error
>>> print(list(index.forward()))
dbf.NotFoundError: 'Record 67305477 is not in table ABC.DBF'
How does one associate the .cdx index file to the .dbf table?