在二进制模式下访问文本文件有一些优势吗?

Jos*_*ras 2 python file-io

我们有一个包含多行的文本文件.这些线可能以CR + LF或LF结束.每行有几个由field_separator分隔的字段(一个或多个字符).

样本1:

field_separator = '\n'
with open('data.txt','r') as f:
    for line in f:
        line = line.split(field_separator)
        for element in line:
            print(element)
Run Code Online (Sandbox Code Playgroud)

样本2:

field_separator = b'\n'
with open('data.txt','br') as f:
    for line in f:
        if line.endswith(b'\n'):
            line = line[0:-1]
        line = line.split(field_separator)
        for element in line:
            print(element)
Run Code Online (Sandbox Code Playgroud)

问题:以二进制模式访问文本文件有一些冒险(样本2与样本1)?

Mar*_*som 5

如果需要保留行结束样式,则必须使用二进制模式.文本模式将始终将行结尾转换为一致.

如果您使用的是Python 3并且您不知道文件的字符编码模式,则可以使用二进制模式来读取文件而不会触发解码错误.将字节解码为Unicode字符串成为您的责任.