[Python-Dev] Remove str.find in 3.0?

Raymond Hettinger raymond.hettinger at verizon.net
Fri Aug 26 22:08:33 CEST 2005


> Can str.find be listed in PEP 3000 (under builtins) for removal?

FWIW, here is a sample code transformation (extracted from zipfile.py).
Judge for yourself whether the index version is better:
Existing code:
--------------
 END_BLOCK = min(filesize, 1024 * 4)
 fpin.seek(filesize - END_BLOCK, 0)
 data = fpin.read()
 start = data.rfind(stringEndArchive)
 if start >= 0: # Correct signature string was found
 endrec = struct.unpack(structEndArchive, data[start:start+22])
 endrec = list(endrec)
 comment = data[start+22:]
 if endrec[7] == len(comment): # Comment length checks out
 # Append the archive comment and start offset
 endrec.append(comment)
 endrec.append(filesize - END_BLOCK + start)
 return endrec
 return # Error, return None
Revised code:
-------------
 END_BLOCK = min(filesize, 1024 * 4)
 fpin.seek(filesize - END_BLOCK, 0)
 data = fpin.read()
 try:
 start = data.rindex(stringEndArchive)
 except ValueError:
 pass
 else:
 # Correct signature string was found
 endrec = struct.unpack(structEndArchive, data[start:start+22])
 endrec = list(endrec)
 comment = data[start+22:]
 if endrec[7] == len(comment): # Comment length checks out
 # Append the archive comment and start offset
 endrec.append(comment)
 endrec.append(filesize - END_BLOCK + start)
 return endrec
 return # Error, return None


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /