2015-06-27 47 views
0

我使用file = open()命令創建了hdf5文件。在這種情況下,我可以編寫和讀取文件。但是當我嘗試file.keys()時,它給了我屬性錯誤。錯誤是AttributeError: 'file' object has no attribute 'keys'hdf5文件中'文件'和'文件'對象的屬性錯誤

然後我使用file = h5py.File()命令創建了一個新的hdf5文件。在這種情況下,我可以讀取並使用命令file.keys(),而不會出現任何錯誤。但我不能在文件中寫入。錯誤是AttributeError: 'File' object has no attribute 'write'

這些錯誤背後的原因是什麼?對象'file'對象與'File'對象之間是否有區別?

回答

1

open()返回file類型的對象,即以標準類型構建的Python來表示文件。這有一個相當簡單/低級別的界面,如果您正在閱讀文本文件或自己解析內容(即文本或二進制文件),則可以使用它。你可以閱讀方法的文檔的file類型有在這裏 - https://docs.python.org/2/library/stdtypes.html#bltin-file-objects

h5py.File()返回不同類型的對象具有附加功能來處理HDF5格式,並提供了它自己的不同的API例如你提到的keys()方法。

打開h5py.File()時,您必須指定要如何打開它,例如用於讀/寫模式的r+。對h5py庫有更好的理解的人可能能夠給出更好的解釋,但是您不能在h5py.File()對象上調用write()的原因是因爲它沒有如錯誤消息所建議的write方法。

查看h5py的API文檔,它提供了將不同數據寫入文件的不同方法 - http://docs.h5py.org/en/latest/high/dataset.html