python - 以二进制模式访问文本文件有一些优势吗?

标签 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)

示例 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)

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

最佳答案

如果您需要保留行尾样式,您必须使用二进制模式。文本模式将始终翻译行尾以保持一致。

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

关于python - 以二进制模式访问文本文件有一些优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38603477/

相关文章:

c - 如何读取文件和分离值

java - 如何将 Map 转换为 Bytes 并保存到内部存储

python - 如何正确读取文件中的黑斜杠?

c - 将包含矩阵的 ASCII 文本文件读入二维数组(C 语言)

python - 如何阅读pyspark中的特定列?

python - 在 Python 中,如何生成每列和每行只有一个元素的数组的排列?

Python setuptools 导入错误(使用 NetBeans)

python - 将 df.apply() 的输出一次写入多个列

python - 使用多重处理来压缩大量文件

java - 基本文件读取到数组存储