file IO

Darren Dale dd55 at cornell.edu
Mon Aug 2 21:23:45 EDT 2004


Darren Dale wrote:

> Can anyone explain this?
> 
> I have a file called old.dat with two lines:
> 
> 1
> 2
> 
> So it's 3 bytes long. I run the following:
> 
> import os
> f = file('old.dat',mode='r')
> olddata = f.readlines()
> f.close()
> 
> f = file('new.dat',mode='w')
> f.writelines(olddata)
> f.close()
> 
> new.dat is now 4 bytes long. ???
> 
> I need to reformat and then save some data.   Then I need to be able to 
> export the reformatted data to a spreadsheet-friendly format. But once I 
> have simply copied (trying to isolate the problem) the file using the 
> script above, my export function takes 10x as long as it would have with 
> the original file. And worse, the output has an extra newline character 
> added at the end of each line. Any suggestions would really be 
> appreciated, I am going a bit crazy trying to understand this.
> 
> Darren

One more bit of info. The extra newline character is added to output 
when I open the rewritten file like this:

import os
from mmap import mmap, ACCESS_READ
f = file('foobar.dat',mode='rU')
fd = f.fileno()
m = mmap(fd, os.fstat(fd).st_size, None, ACCESS_READ)
olddata = []
line = m.readline()
while line:
     olddata.append(line)
     line = m.readline()

using mmap to read the original datafile works. Any thoughts? I would 
really like to stick with mmap, my datafiles are the right size to 
really benefit.

Darren



More information about the Python-list mailing list