一 只读操作(r,rb)
f =open("小娃娃.txt",mode ="r+", encoding="utf-8") content =f.read() f.write('哈哈哈') print(content) f.flush() f.close()
f =open("哈哈哈.txt",mode="r",encoding="utf-8") content =f.read() print(content) f.close()
需要注意encoding表示编码集,根据文件的实际保存编码进行获取数据
rb 读取出来的数据是bytes类型,在rb模式下,不能选择encoding字符集
f =open("哈哈哈.txt",mode="rb") content=f.read() print(content) f.close()
rb 的作用:在读取非文本文件的时候,比如视频,图像就需要rb模式,因为这种数据是无法显示出来的
1 绝对路径:从磁盘的根目录开始一直到文件名
2 相对路径:同一个文件夹下的文件,相对于当前这个程序所在的文件夹而言,如果在同一个文件夹中,则相对路径就是这个文件名,如果在上一层文件夹,则要.../
读取文件的方法:
1 read()将文件中的内容全部读取出来,弊端:占内存
f =open("..哈哈哈.txt",mode="r",encoding(utf-8) content=f.read() print(content)
2 read(n)读取n个字符,需要注意的是,如果再次读取,那么会在当前位置继续去读而不是从头读,如果使用的是rb模式,那么读出来的是n个字节
f =open("哈哈哈.txt",mode="r",encoding="utf-8) content =f.read(3) print(content)
3 readline()一次读取一行数据,注意:readline()结尾,注意每次读取出来的数据都会有一个 所以,需要我们使用strip()方法来去掉 或空格
f =open("..哈哈哈.txt",mode="r",encoding="utf-8" content=f.readline() content2 =f.readline() content3=f.readline() content4=f.readline() print(content) print(content2) print(content3) print(content4)
4 readlines()将每行形成一个元素,放到一个列表中.将所有的内容都读取出来
f=open("哈哈哈.txt",mode="r",encoding="utf-8") lst=f.readlines() print(lst) for line in lst: print(line.strip())
5 循环读取 这种方式是组好的,每次读取一行内容
f=open("哈哈哈.txt",mode="r",encoding="utf-8") for line in f: print(line.strip())
三 写模式(w,wb)
写的时候注意 如果没有文件 则会创建文件 如果文件存在,则会将原来的内容删除 在写入新内容
f =open("小娃娃.txt",mode="w",encoding="utf-8") f.write("金毛狮王") f.flush() #刷新 f.close()
wb 模式下 可以不指定打开文件的编码 但是在写文件的时候必须将字符串转换成utf-8
f=open("小娃娃.txt",mode ="wb") f.write("金毛丝王",encoding("utf-8") f.flush() f.close()
四 追加(a,ab)
在追加的模式下,我们写入的内容会追加到文件的末尾
f =open("小娃娃.txt",mode ="a",encoding="utf-8:) f.write("哈哈哈") f.flush() f.close()
五 读写模式(r,r+b)
对于读写文件 必须是先读 因为光标默认的是在开头,准备读取的,当读完之后在进行写入,使用最高的是R+模式
六 写读(w+,wb+)
先将所有内容清空,然后在写入,最后读取,但是读取的内容是空的,不常用
七 追加读(a+)
a+模式下 不论是先读还是后读,都是都不到数据的
八
1seek(n)光标移动到n位置 注意 移动的单位是byte,所以如果是utf-8的中文部分要是3的倍数