- 学习测试开发的Day96,真棒!
- 学习时间为1H15M
- 第九次全天课(下午视频二0-35M)
r+ 代码
>>> fp=open(r"e://a.txt","r+")
>>> fp.read()
'abc\ndef\nefg\n'
>>> fp.write("Hello")
5
>>> fp.read()
''
>>> fp.seek(0,0)
0
>>> fp.read()
'abc\ndef\nefg\nHello'
>>>
替换是根据字节来覆盖的
<'abc\ndef\nefg\nHello'------>明天见------>'明天见ef\nefg\nHello'
一个汉字两个字节
代码:
>>> fp=open(r"e:\\a.txt","r+")
>>> fp.write("明天见")
3
>>> fp.seek(0,0)
0
>>> fp.read()
'明天见ef\nefg\nHello'
看当前的位置在哪里,用tell
代码:
>>> fp.seek(0,0)
0
>>> fp.tell()
0
>>> fp.readline()
'明天见ef\n'
>>> fp.tell()
10
>>>
一般来说,不要覆盖写
rb
>>> fp=open(r"e:\\a.txt","rb")
>>> fp.read()
b'\xc3\xf7\xcc\xec\xbc\xfbef\r\nefg\r\nHello'
>>> fp.seek(0,0)
0
>>> fp.read().decode("gbk")
'明天见ef\r\nefg\r\nHello'
>>>
使用r读图片文件
读取失败
>>> fp=open(r"e:\\1.png","r",encoding="utf-8")
>>> fp.read()
Traceback (most recent call last):
File "", line 1, in
File "C:\Miniconda3\lib\codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
>>>
使用rb读图片文件
读成功了
>>> fp=open(r"e:\\1.png","rb")
>>> fp.read()
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x02\x0e\x00\x00\x015\x08\x06\x00\x00\x00\x8f\xeeh\xca\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\tpHYs\x00\x00
>>> fp.seek(0,0)
0
>>> fp.read(10)
b'\x89PNG\r\n\x1a\n\x00\x00'
>>>
小练习:复制文件
rb读取所有的内容,写入另外一个文件
自己的代码
fp=open(r"e:\\1.png","rb")
content=fp.read()
fp2=open(r"e:\\2.png","rb+")
fp2.write(content)
fp2=open(r"e:\\2.png","rb")
fp2.seek(0,0)
print(fp2.read(10))
输出:
PS D:\0grory\day9> python .\mycopyfile.py
b'\x89PNG\r\n\x1a\n\x00\x00'
老师的代码
fp1=open("e:\\1.png","rb")
content=fp1.read()
fp1.close()
fp2=open("e:\\2.png","wb")
fp2.write(content)
fp2.close()
代码:
>>> fp=open(r"e:\\b.txt","a+")
>>> fp.read()
''
>>> fp.write("你好11")
4
>>> fp.write("你好12")
4
>>> fp.write("你好13")
4
>>> fp.write("你好14")
4
>>> fp.write("你好15\n")
5
>>> fp.write("你好16\n")
5
>>> fp.write("你好17\n")
5
>>> fp.write("你好18\n")
5
>>> fp.seek(0)
0
>>> fp.read()
'你好11你好12你好13你好14你好15\n你好16\n你好17\n你好18\n'
>>>