Canonical way of dealing with null-separated lines?

Douglas Alan nessus at mit.edu
Sat Feb 26 01:59:13 EST 2005


Okay, here's the definitive version (or so say I).  Some good doobie
please make sure it makes its way into the standard library:

def fileLineIter(inputFile, newline='\n', leaveNewline=False, readSize=8192):
   """Like the normal file iter but you can set what string indicates newline.

   You can also set the read size and control whether or not the newline string
   is left on the end of the iterated lines.  Setting newline to '\0' is
   particularly good for use with an input file created with something like
   "os.popen('find -print0')".
   """
   partialLine = []
   while True:
      charsJustRead = inputFile.read(readSize)
      if not charsJustRead: break
      lines = charsJustRead.split(newline)
      if len(lines) > 1:
         partialLine.append(lines[0])
         lines[0] = "".join(partialLine)
         partialLine = [lines.pop()]
      else:
         partialLine.append(lines.pop())
      for line in lines: yield line + ("", newline)[leaveNewline]
   if partialLine and partialLine[-1] != '': yield "".join(partialLine)

|>oug



More information about the Python-list mailing list