Python 2.7 Python—建议始终使用';b';模式

Python 2.7 Python—建议始终使用';b';模式,python-2.7,file-io,binaryfiles,Python 2.7,File Io,Binaryfiles,我有一个简单的python函数: def ReadFile(FilePath): with open(FilePath, 'r') as f: FileContent = f.readlines() return FileContent 此函数是通用函数,用于打开所有类型的文件。但是,当打开的文件是二进制文件时,此函数不会按预期执行。将呼叫更改为: 解决二进制文件的问题(在文本文件中似乎也保持有效) 问题: 是否安全且建议始终使用rb模式读取文件 如果没有,有哪

我有一个简单的python函数:

def ReadFile(FilePath):
    with open(FilePath, 'r') as f:
        FileContent = f.readlines()
    return FileContent
此函数是通用函数,用于打开所有类型的文件。但是,当打开的文件是二进制文件时,此函数不会按预期执行。将呼叫更改为:

解决二进制文件的问题(在文本文件中似乎也保持有效)

问题:
  • 是否安全且建议始终使用
    rb
    模式读取文件
  • 如果没有,有哪些情况是有害的
  • 如果不知道,如果您不知道正在处理的文件类型,您如何知道使用哪种模式

  • 更新 其中
    f1.txt
    为:

    line1
    
    line3
    
    line1
    
    
    
    line3
    
    文件
    Read_b_Write_wb
    Read_r_Write_wb
    Read_r_Write_w
    eqauls到源
    f1.txt

    文件
    Read\u b\u Write\u w
    是:

    line1
    
    line3
    
    line1
    
    
    
    line3
    

    在Python 2.7教程中:

    在Windows上,附加到模式的“b”以二进制模式打开文件,因此 还有诸如“rb”、“wb”和“r+b”等模式。Windows上的Python 区分文本文件和二进制文件;行尾 当输入数据时,文本文件中的字符会自动轻微更改 是读的还是写的。这是对文件数据的幕后修改 适用于ASCII文本文件,但它会像那样损坏二进制数据 在JPEG或EXE文件中。在读取时要非常小心使用二进制模式 以及编写这样的文件。在Unix上,将“b”附加到 模式,因此您可以在所有二进制文件中独立使用it平台 档案

    我的收获是使用“rb”似乎是最好的做法,而且你似乎遇到了他们警告的问题——在Windows上用“r”打开二进制文件