尝试访问Editor方法时出错

时间:2014-02-07 21:53:00

标签: python

s当我尝试访问对象“e”的任何方法时,我收到错误“AttributeError:instance has no attribute”。我假设在创建对象时,我没有以正确的方式进行。有谁知道为什么?

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')

2 个答案:

答案 0 :(得分:1)

查看该模块的代码,我能看到的唯一方法(实际上a patch submitted就是这样),你最终得到的Editor对象没有fields属性是如果第1043行的条件if os.path.isfile("%s.shp" % base):失败,因为它找不到.shp文件。您确定您的文件是否存在以及您是否使用正确的路径和文件名进行初始化?

答案 1 :(得分:0)

Traceback (most recent call last):
  File "C:\Users\something\Desktop\test2\testing.py", line 5, in <module>
    e = shapefile.Editor(shapefile = 'C:/Users/something/Desktop/test2/testing')
  File "C:\Python27\lib\site-packages\pyshp-1.2.0-py2.7.egg\shapefile.py", line 1048, in __init__
    self.records = r.records()
  File "C:\Python27\lib\site-packages\pyshp-1.2.0-py2.7.egg\shapefile.py", line 525, in records
    r = self.__record()
  File "C:\Python27\lib\site-packages\pyshp-1.2.0-py2.7.egg\shapefile.py", line 490, in __record
    value = int(value)
ValueError: invalid literal for int() with base 10: '**********'

在评估shapefile.py的错误和代码之后,Editor对象返回ValueError的原因是因为与.shp文件关联的.dbf文件中的Null属性。我的.shp文件中每个项目的[0,1,2,3,4,5]的简单归属满足了尝试调用记录方法的构造函数。

感谢您的帮助,如果没有您的指导,Silas将无法解决这个问题。