首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“newlines”属性何时以通用换行符模式设置?

“newlines”属性何时以通用换行符模式设置?
EN

Stack Overflow用户
提问于 2015-04-23 13:52:09
回答 1查看 1.2K关注 0票数 1

我有一个带有Windows样式的行终止器(\r\n)的文本文件,我以通用换行符模式(Python2.7)打开它。我希望在第一次调用readline()方法之后设置readline()属性,但显然不是这样的:

代码语言:javascript
复制
>>> f=open('test_crlf', 'rU')
>>> f.newlines
>>> f.readline()
'foo\n'
>>> f.newlines
>>> f.readline()
'bar\n'
>>> f.newlines
'\r\n'

另一方面,newlines属性是在第一次调用带有Unix样式行尾的文件的readline()之后设置的。

一般规则是什么?什么时候应该设置newlines属性?

EN

回答 1

Stack Overflow用户

发布于 2015-04-23 19:33:34

根据佩普-0278

在通用换行符模式下打开的文件对象将获得一个新的属性“newline”,该属性反映文件中使用的换行符约定。该属性的值为None (尚未读取换行符)、"\r“、"\n”、“\r”或包含所有新行类型的元组。

例如:

代码语言:javascript
复制
>>> fp = open('test.txt', 'wb')
>>> fp.write('a line ending with a cr \r')
>>> fp.write('a line ending with an lf \n')
>>> fp.write('a line ending with a crlf \r\n')
>>> fp.close()
>>> fp = open('test.txt', 'rU')
>>> fp.newlines
>>> fp.readline()
'a line ending with a cr \n'
>>> fp.newlines
>>> fp.readline()
'a line ending with an lf \n'
>>> fp.newlines
('\r', '\n')
>>> fp.readline()
'a line ending with a crlf \n'
>>> fp.newlines
('\r', '\n')
>>> fp.readline()
''
>>> fp.newlines
('\r', '\n', '\r\n')

正如您所看到的,只有在返回'‘的最后一个readline()之后,它才实际注册\r\n,所以它必须捕获只有在下一个迭代中“看到”的换行符类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29825570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档