python - 文件对象中的rb和r+b模式有什么区别

标签 python file file-io pickle

我在 Python 中使用 pickle 模块并尝试不同的文件 IO 模式:

# works on windows.. "rb"
with open(pickle_f, 'rb') as fhand:
        obj = pickle.load(fhand)

# works on linux.. "r"
with open(pickle_f, 'r') as fhand:
        obj = pickle.load(fhand)

# works on both "r+b"
with open(pickle_f, 'r+b') as fhand:
        obj = pickle.load(fhand)

我从未在任何地方读到过“r+b”模式,但在 documentation 中发现了它的提及。 .

如果我使用 "rb" 模式,我会在 Linux 上收到 EOFError,如果使用 "r",我会在 Windows 上收到。我刚刚试了一下 "r+b" 模式,它对这两种模式都有效。

什么是“r+b”模式? “rb”和“r+b”有什么区别?为什么其他人不工作时它会起作用?

最佳答案

r+ 用于读写模式。 b 用于二进制。 r+b模式是以读写方式打开二进制文件。
您可以阅读更多 here .

关于python - 文件对象中的rb和r+b模式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15746954/

相关文章:

python - 在 Python 中直接从 read() 打印会添加一个额外的换行符

python - PyQt4 @pyqtSlot : what is the result kwarg for?

python - 使用 Pandas,如何删除每组的最后一行?

PHP 上传问题

java - 创建 Permission 对象后如何处理它

python - 从 txt 文件中删除一些词替换一些其他词

python - Pandas 数据框错误 'StringArray requires a sequence of strings or pandas.NA'

python - 如何强制 Python (EMCEE) 在先前定义的范围之间精确移动

java - 将文本文件中的数据解析为 HashMap

php - 如何用PHP检测页面重定向?