xls に変換しようとしている dbfs の山があります。
さまざまな例の私のテスト ファイルではうまくいっていますが、作業中の大きな厄介なファイル (「現実世界」の例) に適用すると、コードは次のように返されます。
Traceback (most recent call last):
File "C:\...\final_sum _sw.py", line 73, in <module>
dbf_xls(z, output_xls) #defined, reads dbf, writes xls
File "C:\...\final_sum _sw.py", line 18, in dbf_xls
sheet1.row(row).write(col, DBF[row][col])
File "C:\Python26\ArcGIS10.0\lib\site-packages\dbfpy\dbf.py", line 242, in __getitem__
return self.RecordClass.fromStream(self, self._fixIndex(index))
File "C:\Python26\ArcGIS10.0\lib\site-packages\dbfpy\record.py", line 121, in fromStream
return cls.fromString(dbf, cls.rawFromStream(dbf, index), index)
File "C:\Python26\ArcGIS10.0\lib\site-packages\dbfpy\record.py", line 140, in fromString
[_fd.decodeFromRecord(string) for _fd in dbf.header.fields])
File "C:\Python26\ArcGIS10.0\lib\site-packages\dbfpy\fields.py", line 173, in decodeFromRecord
return self.decodeValue(self.rawFromRecord(record))
File "C:\Python26\ArcGIS10.0\lib\site-packages\dbfpy\fields.py", line 244, in decodeValue
return int(value)
ValueError: invalid literal for int() with base 10: '1 U'
表の問題値 = Cumula. 面積は 1.1 不明なマテリアル タイプです。
他のファイルには、同じ「数字、スペース、文字」形式またはエラーを返す同じ問題があります。
dbfpy はこのフィールドを 'c' として読み取りますが、dbfpy がこの値を int() として扱う原因となっている小数やピリオドについて何かありますか? モジュールをだましてすべての値を厳密に文字列値として扱うように強制する方法はありますか?