我有一堆 dbfs,我正试图将它们转换成 xls。
在我的各种示例的测试文件中,一切都很好,但是当应用于工作中的大讨厌文件(带有“真实世界”示例)时,我的代码返回:
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() 的句点?无论如何都会强制,欺骗模块将所有值视为严格的字符串值?