This might be hack-ish, more elegant solutions are likely to exist, but this is the general idea:
LINEFEED = "\n" # or whatever EOR = "?" # or whatever def fixEOR(filename): f = open(filename,"r+") byte = True # loops through whole file while True: # loops through record while byte and (byte != EOR): byte=f.read(1) if not byte: break f.seek(-1,1) # backup 1 byte = LINEFEED f.write(byte) # incidentally, will put LINEFEED at EOF f.flush() f.close() On Wednesday 09 March 2005 02:06 pm, Greg Lindstrom wrote: > Hello- > > I have a task which -- dare I say -- would be easy in <asbestos_undies> > Perl </asbestos_undies> but would rather do in Python (our primary > language at Novasys). I have a file with varying length records. All > but the first record, that is; it's always 107 bytes long. What I would > like to do is strip out all linefeeds from the file, read the character > in position 107 (the end of segment delimiter) and then replace all of > the end of segment characters with linefeeds, making a file where each > segment is on its own line. Currently, some vendors supply files with > linefeeds, others don't, and some split the file every 80 bytes. In > Perl I would operate on the file in place and be on my way. The files > can be quite large, so I'd rather not be making extra copies unless it's > absolutely essential/required. > > I turn to the collective wisdom/trickery of the list to point me in the > right direction. How can I perform the above task while keeping my sanity? > > Thanks! > --greg > -- > Greg Lindstrom 501 975.4859 > Computer Programmer [EMAIL PROTECTED] > NovaSys Health > Little Rock, Arkansas > > "We are the music makers, and we are the dreamers of dreams." W.W. -- James Stroud, Ph.D. UCLA-DOE Institute for Genomics and Proteomics Box 951570 Los Angeles, CA 90095 -- http://mail.python.org/mailman/listinfo/python-list