From 768a535ae44e4878882dd29fbe9dd0a5eb489911 Mon Sep 17 00:00:00 2001 From: Karim Bahgat Date: Sat, 27 Aug 2016 14:39:05 +0200 Subject: [PATCH 1/2] Revert back to original records() method Fixes issue introduced in PR #62, see issue #66. Previously tried fixing it in PR #67, but reverting to original was better. --- shapefile.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shapefile.py b/shapefile.py index f63d9c8..c501d18 100644 --- a/shapefile.py +++ b/shapefile.py @@ -549,11 +549,13 @@ def records(self): """Returns all records in a dbf file.""" if not self.numRecords: self.__dbfHeader() + records = [] f = self.__getFileObj(self.dbf) f.seek(self.__dbfHeaderLength()) - flat = unpack(self.__recStruct.format * self.numRecords, f.read(self.__recStruct.size * self.numRecords)) - rowlen = len(self.fields) - 1 - records = list(izip(*(iter(flat),) * rowlen)) + for i in range(self.numRecords): + r = self.__record() + if r: + records.append(r) return records def iterRecords(self): From a65696581e32b7ac4f91647bef59163a79f294cd Mon Sep 17 00:00:00 2001 From: Karim Bahgat Date: Sat, 27 Aug 2016 14:43:54 +0200 Subject: [PATCH 2/2] Fixed wrong doc for the __recordFmt() method --- shapefile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shapefile.py b/shapefile.py index c501d18..1a08904 100644 --- a/shapefile.py +++ b/shapefile.py @@ -477,7 +477,7 @@ def __dbfHeader(self): self.__recStruct = Struct(fmt) def __recordFmt(self): - """Calculates the size of a .shp geometry record.""" + """Calculates the format and size of a .dbf record.""" if not self.numRecords: self.__dbfHeader() fmt = ''.join(['%ds' % fieldinfo[2] for fieldinfo in self.fields])