Skip to content

Instantly share code, notes, and snippets.

@osya
Last active August 29, 2015 14:20
Show Gist options
  • Save osya/88520e71a701061191bd to your computer and use it in GitHub Desktop.
Save osya/88520e71a701061191bd to your computer and use it in GitHub Desktop.
Working with DBF (FIAS database) in Python #Python
# -*- coding: utf-8 -*-
#Encoding settings for correct utf-8 parsing
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import timeit
#TODO: сделать то же самое на двух других библиотеках
start_time = timeit.default_timer()
'''import dbf
with dbf.Table('C:\\Users\\vosipov\Downloads\\fias_dbf\\ADDROBJ.DBF') as table:
table.open()
for i, record in enumerate(table):
if 1 == record.actstatus and '45301000' == record.oktmo.strip():
print u'FORMALNAME: {0:25}; PARENTGUID: {1:20}; AOLEVEL: {2:1}'.format(record.formalname, record.parentguid, record.aolevel)
table.close()'''
#441.458978603
'''from dbfread import DBF
for record in DBF('C:\\Users\\vosipov\Downloads\\fias_dbf\\ADDROBJ.DBF'):
if 1 == record['ACTSTATUS'] and '45301000' == record['OKTMO']:
print u'FORMALNAME: {0:25}; PARENTGUID: {1:20}; AOLEVEL: {2:1}'.format(record['FORMALNAME'], record['PARENTGUID'], record['AOLEVEL'])'''
#1808.87772007
from dbfpy import dbf
db = dbf.Dbf("C:\\Users\\vosipov\Downloads\\fias_dbf\\ADDROBJ.DBF")
for record in db:
if 1 == record['ACTSTATUS'] and '45301000' == record['OKTMO']:
print u'FORMALNAME: {0:25}; PARENTGUID: {1:20}; AOLEVEL: {2:1}'.format(record['FORMALNAME'].decode('cp866'), record['PARENTGUID'], record['AOLEVEL'])
db.close()
#1821.94425741
print 'Finished'
print(timeit.default_timer() - start_time)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment