Python二进制模式打开文件open()
我们看到了在文件打开模式中有以下模式:rb、wb……有这种带 b 的。
·
我们看到了在文件打开模式中有以下模式:rb、wb……有这种带 b 的。
什么意思呢?
就是用二进制的方式打开文件。
# 1.只读模式打开文件
f1 = open('d:\\infile.txt')
# 2.写模式打开文件
f2 = open('output.txt', 'w')
# 3.以二进制写模式打开文件
f3 = open('record.dat', 'wb', 0)
open()函数-mode
Mode | Function |
---|---|
r | 以读模式打开 |
w | 以写模式打开(清空原内容) |
x | 以写模式打开,若文件已存在则失败 |
a | 以追加模式打开(从EOF开始,必要时创建新文件) |
r+ | 以读写模式打开 |
w+ | 以读写模式打开(清空原内容) |
a+ | 以读和追加模式打开 |
rb | 以二进制读模式打开 |
wb | 以二进制写模式打开(参见w) |
ab | 以二进制追加模式打开(参见a) |
rb+ | 以二进制读写模式打开(参见r+) |
wb+ | 以二进制读写模式打开(参见w+) |
ab+ | 以二进制读写模式打开(参见a+) |
ab+ | 以二进制读写模式打开(参见a+) |
我们来举个例子。
# 1.读写模式打开文件
f = open('img.png')
# 2. 写入文件内容
for i in f:
print(i)
print('代码执行结束!')
# 3.关闭文件
f.close()
很明显,我们出现了以下错误:
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-14-fa3f29988d83> in <module>()
3
4 # 2. 写入文件内容
----> 5 for i in f:
6 print(i)
7 print('代码执行结束!')
UnicodeDecodeError: 'gbk' codec can't decode byte 0xf3 in position 30: illegal multibyte sequence
主要原因是因为编码的问题,可能是因为0x82这个字节在gbk编码中没有这个字符,
可能原字符是两个字节,在gbk里被解析成了一个字节,导致字符不存在。
这就是我们文件打开方式需要使用二进制读取的原因。
# 1.读写模式打开文件
f = open('img.png', 'rb')
# 2. 写入文件内容
for i in f:
print(i)
print('代码执行结束!')
# 3.关闭文件
f.close()
'''
代码执行结束!
'''
更多推荐
已为社区贡献6条内容
所有评论(0)