【发布时间】:2015-04-23 22:45:53
【问题描述】:
所以我有这个简单的python函数:
def ReadFile(FilePath):
with open(FilePath, 'r') as f:
FileContent = f.readlines()
return FileContent
此功能是通用的,用于打开各种文件。但是,当打开的文件是二进制文件时,此功能不会按预期执行。将open() 调用更改为:
with open(FilePath, 'rb') as f:
解决二进制文件的问题(并且似乎在文本文件中也保持有效)
问题:
- 是否安全并建议始终使用
rb模式读取文件? - 如果不是,在哪些情况下有害?
- 如果不是,如果您不知道您正在使用什么类型的文件,您如何知道使用哪种模式?
更新
FilePath = r'f1.txt'
def ReadFileT(FilePath):
with open(FilePath, 'r') as f:
FileContent = f.readlines()
return FileContent
def ReadFileB(FilePath):
with open(FilePath, 'rb') as f:
FileContent = f.readlines()
return FileContent
with open("Read_r_Write_w", 'w') as f:
f.writelines(ReadFileT(FilePath))
with open("Read_r_Write_wb", 'wb') as f:
f.writelines(ReadFileT(FilePath))
with open("Read_b_Write_w", 'w') as f:
f.writelines(ReadFileB(FilePath))
with open("Read_b_Write_wb", 'wb') as f:
f.writelines(ReadFileB(FilePath))
f1.txt 在哪里:
line1
line3
文件Read_b_Write_wb、Read_r_Write_wb 和Read_r_Write_w 等同于源f1.txt。
文件Read_b_Write_w是:
line1
line3
【问题讨论】:
标签: python-2.7 file-io binaryfiles