
代替内置
open()函数,使用
io.open()。这使您可以更好地控制使用
newline参数处理换行符的方式:
import iowith io.open(fn, 'rt', newline='') as f: lines = f.readlines()
设置
newline为空字符串,将启用通用换行符支持,但返回未翻译的行尾;您仍然可以使用
.readlines()查找以任何合法行终止符终止的行,但是返回的数据与在文件中找到的数据完全相同:
输入时,如果newline为
None,则启用通用换行模式。输入中的行可以以'n','r'或结束,在返回给调用方之前'rn',这些行会被翻译成'n'。如果是'',则启用通用换行模式,但
行结尾未翻译地返回给呼叫者 。
强调我的。
这与以二进制模式打开文件不同,在二进制模式下,
.readlines()文件只会按
n字符分割。对于具有
r行尾或混合行尾的文件,这意味着行将无法正确分割。
演示:
>>> import io>>> open('test.txt', 'wb').write('OnenTworThreern')>>> open('test.txt', 'rb').readlines()['Onen', 'TworThreern']>>> io.open('test.txt', 'r', newline='').readlines()[u'Onen', u'Twor', u'Threern']请注意,
io.open()还将文件内容解码为unipre值。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)