今天是老男孩培训的第8天,大致内容整理如下:
1.文件的操作:
1.文件路径:文件路径分为绝对路径和相对路径,绝对路径指从根目录到指定文件,详细的路径。相对路径指你所在位置的同一位置的文件。
2.文件的编码方式,字符串形式(str)居多
3.操作方式:只读,只写,追加,读写等等。。。
先建立一个文档,内容为‘AAA’
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) content = f.read() print(content) f.close()
要注意的是,以什么编码形式存储的文件,就要以什么形式打开,否则就会乱码,非文字类用‘rb’(byts)
只写:w
f = open(‘a‘,mode=‘w‘,encoding=‘utf-8‘) f.write(‘BBB‘) f.close()
该操作将原有的文档a清空然后写入‘BBB‘注意会清空原有内容,如果没有该文件则创建文件
byte也是用‘wb’
追加:
f = open(‘a‘,mode=‘a‘,encoding=‘utf-8‘) f.write(‘CCC‘) f.close()
该操作不会清楚原有内容,故为追加,bytes类型为ab
读写:
f = open(‘a‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.read()) f.write(‘DDD‘) f.close()
f = open(‘a‘,mode=‘r+‘,encoding=‘utf-8‘) f.write(‘DDD‘) print(f.read()) f.close()
**这里的意思是,在读写操作中先写后读也是存在的,但是先写后读会在光标处,也就是一开始加入你的字符,然后从光标出读,也就是写的内容不会读。byts是r+b
写读:
f = open(‘a‘,mode=‘w+‘,encoding=‘utf-8‘) f.write(‘EEE‘) print(f.read()) f.close()
因为是w+所以依旧会先清空
常用方法:
.seek() 光标移动
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(2) content = f.read() print(content) f.close()
文件中的是EEE,为什么会读出一个E呢?因为你用seek移动到了第二个字节处,再读就是只有一个E
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(3) content = f.read() print(content) f.close()
为什么只少输出一个呢?因为UTF-8中,一个中文3字节,而seek方法按字节移动,如果是2则会报错。
.tell() 告诉你光标的位置
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(3) content = f.tell() print(content) f.close()
因为seek是按字节,所以tell也是按照字节
.readtable()
是否可读
.truncate()
截取一段去读
.readline()
一行一行读
.readlines()
每一行当成列表中的一个元素
在操作中也可以使用
with open () as 句柄
来代替原有的
= open()
.close()
编码的补充:
bytes转str
.decode()