Скрипт такой:
Код: Выделить всё
#!/usr/bin/python
#--*-- encoding: utf-8 --*--
import sys
from dbfpy import dbf
from types import *
db = dbf.Dbf(sys.argv[1])
newDB=dbf.Dbf(sys.argv[2], new=True)
for f in db.header.fields:
newDB.addField(f)
for rec in db:
r=newDB.newRecord()
newData=[]
for f in rec.fieldData:
if type(f)==StringType:
f=unicode(f,'utf-8')
f=f.encode('windows-1251')
newData.append(f)
r.fieldData=newData
r.store()
db.close()
newDB.close()
Traceback (most recent call last):
File "dbfer.py", line 14, in <module>
for rec in db:
File "/usr/local/lib/python2.5/site-packages/dbfpy/dbf.py", line 242, in __getitem__
return self.RecordClass.fromStream(self, self._fixIndex(index))
File "/usr/local/lib/python2.5/site-packages/dbfpy/record.py", line 121, in fromStream
return cls.fromString(dbf, cls.rawFromStream(dbf, index), index)
File "/usr/local/lib/python2.5/site-packages/dbfpy/record.py", line 140, in fromString
[_fd.decodeFromRecord(string) for _fd in dbf.header.fields])
File "/usr/local/lib/python2.5/site-packages/dbfpy/fields.py", line 169, in decodeFromRecord
return self.decodeValue(self.rawFromRecord(record))
File "/usr/local/lib/python2.5/site-packages/dbfpy/fields.py", line 243, in decodeValue
return int(value)
ValueError: invalid literal for int() with base 10: 'town'