ida*_*hmu 5 file-io binaryfiles python-2.7
所以我有这个简单的python函数:
def ReadFile(FilePath):
with open(FilePath, 'r') as f:
FileContent = f.readlines()
return FileContent
Run Code Online (Sandbox Code Playgroud)
此函数是通用的,用于打开所有类型的文件.但是,当打开的文件是二进制文件时,此功能无法按预期执行.将open()调用更改为:
with open(FilePath, 'rb') as f:
Run Code Online (Sandbox Code Playgroud)
解决二进制文件的问题(并且似乎在文本文件中保持有效)
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))
Run Code Online (Sandbox Code Playgroud)
在哪里f1.txt:
line1
line3
Run Code Online (Sandbox Code Playgroud)
文件Read_b_Write_wb,Read_r_Write_wb以及Read_r_Write_w来源的eqauls f1.txt.
档案Read_b_Write_w是:
line1
line3
Run Code Online (Sandbox Code Playgroud)
在 Python 2.7 教程中:\n https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
\n\n\n\n\n在 Windows 上,附加到模式的“b”以二进制模式打开文件,因此还有“rb”、“wb”和“r+b”等模式。Windows 上的 Python 区分文本文件和二进制文件;当读取或写入数据时,文本文件中的行尾字符会自动稍微改变。这种对文件数据的幕后修改对于 ASCII 文本文件来说没问题,但它会损坏 JPEG 或 EXE 文件中的二进制数据。读取和写入此类文件时要非常小心地使用二进制模式。在 Unix 上,\xe2\x80\x99 向模式附加 \'b\' 不会有什么坏处,因此你可以独立于平台对所有二进制文件使用它。
\n
我从中得出的结论是,使用 \'rb\' 似乎是最佳实践,而且看起来您遇到了他们警告的问题 - 在 Windows 上使用 \'r\' 打开二进制文件。
\n| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |