File Object behavior

2007-04-03 Thread Michael Castleton

When I open a csv or txt file with:

infile = open(sys.argv[1],'rb').readlines()
or 
infile = open(sys.argv[1],'rb').read()

and then look at the first few lines of the file there is a carriage return
+ 
line feed at the end of each line - \r\n
This is fine and somewhat expected.  My problem comes from then writing
infile out to a new file with:

outfile = open(sys.argv[2],'w')
outfile.writelines(infile)
outfile.close()

at which point an additional carriage return is inserted to the end of each
line - \r\r\n
The same behavior occurs with outfile.write(infile) also. I am doing no
processing
between reading the input and writing to the output.
Is this expected behavior? The file.writelines() documentation says that it 
doesn't add line separators. Is adding a carriage return something
different?
At this point I have to filter out the additional carriage return which
seems like 
extra and unnecessary effort.
I am using Python 2.4 on Windows XP sp2.
Can anybody help me understand this situation?

Thanks
-- 
View this message in context: 
http://www.nabble.com/File-Object-behavior-tf3520070.html#a9821538
Sent from the Python - python-list mailing list archive at Nabble.com.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: File Object behavior

2007-04-03 Thread Michael Castleton

Thank you to both Steve and 7stud. You were right on with binary flag!
I thought I had tried everything...

Mike
-- 
View this message in context: 
http://www.nabble.com/File-Object-behavior-tf3520070.html#a9825806
Sent from the Python - python-list mailing list archive at Nabble.com.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: File Object behavior

2007-04-03 Thread Michael Castleton



Bruno Desthuilliers wrote:
> 
> Michael Castleton a écrit :
>> When I open a csv or txt file with:
>> 
>> infile = open(sys.argv[1],'rb').readlines()
>> or 
>> infile = open(sys.argv[1],'rb').read()
>> 
>> and then look at the first few lines of the file there is a carriage
>> return
>> + 
>> line feed at the end of each line - \r\n
> 
> Is there any reason you open your text files in binary mode ?
> 
> Unless you're using the csv module (which requires such a mode - but 
> then you don't care since you're not working with the raw data 
> yourself), you should consider opening your files in text mode. This 
> should solve your problem (if not, then you have a problem with 
> universal newlines support in your Python install).
> 
> HTH
> -- 
> http://mail.python.org/mailman/listinfo/python-list
> 
> 


Bruno,
No particular reason in this case. It was probably as a holdover from using
the csv module in the past.  I'm wondering though if using binary on very
large
files (>100Mb) would save any processing time - no conversion to system
newline?
What do you think?
Thanks.

-- 
View this message in context: 
http://www.nabble.com/File-Object-behavior-tf3520070.html#a9827881
Sent from the Python - python-list mailing list archive at Nabble.com.

-- 
http://mail.python.org/mailman/listinfo/python-list