gpt4 book ai didi

python - `newlines` 属性何时在通用换行模式下设置?

转载 作者:行者123 更新时间:2023-11-30 23:12:26 27 4
gpt4 key购买 nike

我有一个带有 Windows 样式行终止符 (\r\n) 的文本文件,我以通用换行符模式 (Python 2.7) 打开该文件。我希望在第一次调用 readline() 方法后设置 newlines 属性,但显然情况并非如此:

>>> f=open('test_crlf', 'rU')
>>> f.newlines
>>> f.readline()
'foo\n'
>>> f.newlines
>>> f.readline()
'bar\n'
>>> f.newlines
'\r\n'

另一方面,在具有 Unix 样式行结尾的文件上首次调用 readline() 后,会设置 newlines 属性。

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

最佳答案

根据 pep-0278

A file object that has been opened in universal newline mode gets a new attribute "newlines" which reflects the newline convention used in the file. The value for this attribute is one of None (no newline read yet), "\r", "\n", "\r\n" or a tuple containing all the newline types seen.

举个例子:

>>> 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。因此它必须仅在下一次迭代中捕获“看到”的换行符类型。

关于python - `newlines` 属性何时在通用换行模式下设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com