基础学习之第八天(文件操作)

文件操作
1.初识文件操作
2.只读(r,rb)
3.只写(w,wb)
4.追加(a,ab)
5.r+读写
6.w+写读
7.a+写读(追加写读)
8.其他写作方式
9.文件的修改以及另一种打开文件句柄的方式
主要内容:   
1.我们可以通过使用open()函数的方式打开文件的句柄
打开文件的方式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b,默认使用r(只读模式)
2.只读(r和rb)操作

# r模式
f = open('H:/123.txt', mode='r',encoding='UTF-8') # 打开123文件,用只读的方式,编码格式是UTF-8
centent = f.read()  # 读取文件
print(centent)      # 输出内容
f.close()           # 关闭文件

# rb模式
f = open('H:/123.txt', mode='rb' ) # 打开123文件,用只读字节的方式
centent = f.read()  # 读取文件,会读取出来字节模式的
print(centent)      # 输出内容.输出字节形式的
f.close()           # 关闭文件

绝对路径和相对路径:

  绝对路径:从根目录下一直到你那个文件的位置

  相对路径:根据你当前所在位置的路径

  ../ 返回上一层

读取文件的方式:

read():将文件中的全部内容全部读取出来,弊端:占内存,如果文件太大会崩溃

read(n):读取几个字符,在rb模式下才是读取几个字节

readline():一次读取一行,每次读取的数据后面都有一个\n,需要去除

readlines():会将每一行形成一个元素,放到一个列表里

最好使用for循环的方式打开

读取完一定要f.close(),来关闭句柄

写读文件的方式(w,wb):
写的时候要注意,如果没有文件,则会创建文件,如果文件存在,则会删除文件内容,再写入新的内容

write():写入内容,在写入内容的模式下,是无法读取的

flush():刷新文件

wb模式下,可以不指定打开文件的编码,但是在写入的时候必须将字符串,转换为UTF-8的bytes数据

 

encode(编码):字符通过编码成为自节

decode(编码):字节通过解码成为字符

 

追加(a,ab)

在追加模式下. 我们写入的内容会追加在文件的结尾

读写模式(r+, r+b)

  对于读写模式. 必须是先读. 因为默认光标是在开头的.准备读取的. 当读完了之后再进行写入. 我们以后使用频率最多的模式就是r+

  需要先读在写

写读(w+, w+b)

  先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用

追加读(a+)

 

  a+模式下, 不论先读还是后读. 都是读取不到数据的.

其他操作:
  seek(n):seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中文部分要是3的倍数. 通常我们使用seek都是移动到开头或者结尾. 移动到开头: seek(0) 移动到结尾: seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移, 默认是0, 表示开头, 1表示当前位置, 2表示结尾

  tell():使用tell()可以帮助我们获取当前光标位置

  truncate() 截断文件

    在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作. 所以如果想做截断操作. 记住了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进行截断 关于truncate(n), 如果给出了n. 则从开头开头进行截断, 如果不给n, 则从当前位置截断. 后面的内容将会被删除

    另一种打开文件的方式:

  with open("娃娃", mode="r", encoding="utf-8") as f1:

    这个不需要关闭文件,使用方式和上面一样

 

posted @ 2018-06-08 15:32  春秋羽  阅读(115)  评论(0编辑  收藏  举报