2014-02-07 91 views
0

儘快嘗試訪問對象「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') 
+0

你從哪裏得到錯誤?什麼是*確切*錯誤? –

+0

回溯(最近一次通話最後一次): 文件「C:\ Users \ askdljfasd \ Desktop \ Python \ multipart.py」,第9行,在 e.field('something',fieldType ='C',size = '4') 文件「C:\ Python27 \ lib \ site-packages \ pyshp-1.2.0-py2.7.egg \ shapefile.py」,第944行,在字段 self.fields.append((name, fieldType,size,decimal)) AttributeError:編輯器實例沒有屬性'fields' – wonderstruck80

回答

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的錯誤代碼後,爲什麼編輯器對象被返回ValueError異常的原因是因爲在空關聯到.shp文件.dbf文件屬性。我的.shp文件中每個項目的簡單屬性[0,1,2,3,4,5]滿足構造函數嘗試調用records方法的要求。

謝謝你的幫助西拉斯,如果不是你的指導,將無法解決這個問題。

1

望着那模塊的代碼,只有這樣我可以看到(實際上a patch submitted有這個),你可以用一個Editor對象最終沒有fields屬性,如果在線路條件if os.path.isfile("%s.shp" % base): 1043失敗因爲它找不到.shp文件。你確定你的文件存在,並且你正在用正確的路徑和文件名進行初始化嗎?

+0

我絕對確定。我可以使用Reader類訪問形狀文件 – wonderstruck80

+0

只有當我爲Writer或Editor類創建一個對象並嘗試調用其某個方法時,纔會出現錯誤 – wonderstruck80

+1

根據您在此複製的代碼,你用相對而不是絕對路徑打開編輯器。嘗試使用絕對路徑。 –

相關問題