一旦我尝试访问对象"e"的任何方法,我就会收到错误"属性错误:实例没有属性"。 我假设当我创建对象时,我没有以正确的方式进行操作。 有谁知道为什么?
import shapefile
sf = shapefile.Reader('C:/users/name/desktop/shapefiles/Polygon')
e = shapefile.Editor(shapefile = 'desktop/shapefiles/Polygon.shp')
indexesMpart = [i for i, shape in enumerate(shapes) if len(shape.parts) > 1]
for index in indexesMpart:
e.field('something', fieldType = 'C', size = '4')
查看该模块的代码,我可以看到(实际上为此提交了补丁)的唯一方法(实际上有一个补丁)您最终可能会得到一个没有fields
属性的Editor
对象是,如果第 1043 行的条件if os.path.isfile("%s.shp" % base):
失败,因为它找不到.shp
文件。 是否确定文件存在,并且正在使用正确的路径和文件名进行初始化?
Traceback (most recent call last):
File "C:UserssomethingDesktoptest2testing.py", line 5, in <module>
e = shapefile.Editor(shapefile = 'C:/Users/something/Desktop/test2/testing')
File "C:Python27libsite-packagespyshp-1.2.0-py2.7.eggshapefile.py", line 1048, in __init__
self.records = r.records()
File "C:Python27libsite-packagespyshp-1.2.0-py2.7.eggshapefile.py", line 525, in records
r = self.__record()
File "C:Python27libsite-packagespyshp-1.2.0-py2.7.eggshapefile.py", line 490, in __record
value = int(value)
ValueError: invalid literal for int() with base 10: '**********'
在评估错误和 shapefile.py 代码后,编辑器对象返回 ValueError 的原因是因为与 .shp 文件关联的.dbf文件中的 Null 属性。 我的 .shp 文件中每个项目的简单属性 [0,1,2,3,4,5] 满足尝试调用 records 方法的构造函数。
谢谢你的帮助,西拉斯,如果没有你的指导,就无法弄清楚这一点。