2012-12-13 30 views
0

的方法self.prepSetFile()返回的數據類型字典的爲什麼我會收到屬性錯誤?

dataTodump=self.prepSetFile() 
    try: 
     settingFile=os.path.join(self.settingsDir,"setting.txt") 
     output_phil=open(settingFile,'w') 
     pickle.dump(dataTodump,settingFile,0) 
    except: raise 

我不知道爲什麼我收到屬性錯誤

AttributeError:
'str' object has no attribute 'write'

我甚至測試這顯然是dataTodump的數據類型字典

+4

*報告Python異常時總是*包含* full * traceback。 –

+3

'除了:raise',爲什麼你甚至需要'try-catch'呢? – quantum

回答

5

您需要將打開文件傳遞給pickle.dump;你傳遞了一個文件名:

output_phil=open(settingFile,'wb') 
pickle.dump(dataTodump, output_phil, 0) 

注意的是,文件是在二進制方式打開,以防止\n字節被翻譯在非UNIX平臺。

+0

或更好:'pickle.dump(dataTodump,output_phil,0)' – glglgl

+1

@glglgl:almost;現在增加一個'wb'二進制模式。 –

相關問題