File Object behavior
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
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
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