iterating through files with carriage returns
Is there a way to iterate through a text file using the syntax,
with open(filename,'r') as f:
for line in f:
print f
if the file only contain开发者_如何学Gos carriage returns and no newline characters?
So far all I can do is
with open(filename,'r') as f:
for line in f.read().split('\r'):
print f
But the files are sometimes huge. I don't want to modify the file using dos2unix because another software program needs it in the original format.
You can use Python's universal newline support for open()
In addition to the standard fopen() values mode may be
'U'
or'rU'
. Python is usually built with universal newline support; supplying'U'
opens the file as a text file, but lines may be terminated by any of the following: the Unix end-of-line convention'\n'
, the Macintosh convention'\r'
, or the Windows convention'\r\n'
. All of these external representations are seen as'\n'
by the Python program. If Python is built without universal newline support a mode with'U'
is the same as normal text mode. Note that file objects so opened also have an attribute called newlines which has a value ofNone
(if no newlines have yet been seen),'\n'
,'\r'
,'\r\n'
, or a tuple containing all the newline types seen.
You can use open(filename, 'rU')
.
精彩评论