Skip to content

Commit e41b03c

Browse files
committedOct 11, 2024·
Add option my_range to method iterRecords
Using iterRecords with a range option should be faster than calling record within a loop, since we avoid the multiple calls to seek.
1 parent 7fbbd8e commit e41b03c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed
 

‎shapefile.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1809,7 +1809,7 @@ def records(self, fields=None):
18091809
records.append(r)
18101810
return records
18111811

1812-
def iterRecords(self, fields=None):
1812+
def iterRecords(self, fields=None, my_range=None):
18131813
"""Returns a generator of records in a dbf file.
18141814
Useful for large shapefiles or dbf files.
18151815
To only read some of the fields, specify the 'fields' arg as a
@@ -1820,7 +1820,9 @@ def iterRecords(self, fields=None):
18201820
f = self.__getFileObj(self.dbf)
18211821
f.seek(self.__dbfHdrLength)
18221822
fieldTuples, recLookup, recStruct = self.__recordFields(fields)
1823-
for i in xrange(self.numRecords):
1823+
if my_range is None:
1824+
my_range = xrange(self.numRecords)
1825+
for i in my_range:
18241826
r = self.__record(
18251827
oid=i, fieldTuples=fieldTuples, recLookup=recLookup, recStruct=recStruct
18261828
)

0 commit comments

Comments
 (0)
Please sign in to comment.