python修炼之路-day8

文件操作

    文件操作概念使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文 件句柄. 然后通过文件句柄就可以进行各种各样的操作了. 根据打开方式的不同能够执行的操 作            也会有相应的差异.

    文件操作方式: r ,  w  ,   a  ,  r+  , w+  , a+  , rb  , wb  , ab  , r+b  , w+b  , a+b   (默认使用r打开)

    文件操作 r (只读) 只能进行读取操作    read(n)     n只能为数字,表示读取到第几个位置,n为几,读取位置就截止到第几个字符

1 f = open('info', 'r', encoding='utf-8')
2 # s = f.read()    # 读取全部内容
3 s = f.read(3)   # 默认从头开始读取,读取到第三个位置 , 如果再次读取,会从当前位置(光标处)开始读取
4 f.close()
5 print(s)

    文件操作 w (写入) 只要用w写入内容,文件原本的内容就会全部删除

1 f = open('info', 'w', encoding='utf-8')
2 f.write('影流之主  劫')
3 f.flush()
4 f.close()

    文件操作 a (追加) 可以在不该原文件内容的情况下添加新的内容

1 f = open('info', 'a', encoding='utf-8')
2 f.write('\n九尾妖狐 阿狸')
3 f.flush()
4 f.close()

    文件操作 r+ (读写) 打开文件可以进行读取和写入的操作 注意:如果先进行写入的操作,那么读取时只能读取到写入之后的内容

1 f = open('info', 'r+', encoding='utf-8')
2 f.write('\n熔岩巨兽 墨菲特')   # 如果先写再读,写入的内容会从开头开始覆盖,写入多少内容就会覆盖多少内容,然后光标会停在写入内容结束的位置
3 s = f.read()     # 写入之后读取,会从光标处开始读取剩余的全部内容    所以正确的顺序应该是先读取再写入
4 f.flush()
5 f.close()
6 print(s)

  

1 # 先读取再写入
2 f = open('info', 'r+', encoding='utf-8')
3 s = f.read()    # 先读取文件全部内容,光标会停留在最后
4 print(s)
5 f.write("\n熔岩巨兽 墨菲特")     # 然后在光标处添加内容
6 f.flush()
7 f.close()

    文件操作 w+ (写读) 先将原文件的内容清空,然后写入内容,最后再读取内容,但是读取是读不到内容的(不常用)

1 f = open('info', 'w+', encoding='utf-8')
2 f.write('诺克萨斯之手 德莱厄斯')    # 清空文件,添加内容
3 s = f.read()                     # 读取文件,但是读取的内容为空
4 f.flush()
5 f.close()
6 print(s)

    文件操作 rb (只读 非文本格式使用) 读取出来的数据是bytes类型, rb模式下. 不能选择encoding字符集.

1 f = open('info', 'rb')
2 s = f.read()   # 读取的内容直接就是字节
3 print(s)
4 f.close()

    文件操作 readline() 逐行读取,将文件内容一行一行的显示出来,(会出现换行,可用 strip()来去除空格,换行符和制表符)

1 f = open('info', 'r', encoding='utf-8')
2 s = f.readline().strip()
3 s1 = f.readline().strip()
4 s2 = f.readline().strip()
5 print(s)
6 print(s1)
7 print(s2)
8 f.close()

    文件操作 readlines() 将每一个行形成一个元素,放到一个列表中,将所有内容都读取出来(不常用)

1 f = open('info', 'r', encoding='utf-8')
2 s = f.readlines()
3 print(s)
4 f.close()

    文件操作 seek()     seek(n)   n是光标的位置,n的单位是字节(byte) utf-8编码下,一个汉字等于3个字节

      seek()  使用方式:

        seek(0)  移动光标到开头位置

        seek(0,2)   移动光标到结尾位置

 1 f = open("⼩小娃娃", mode="r+", encoding="utf-8") 
 2 f.seek(0)   # 光标移动到开头 
 3 content = f.read()  # 读取内容, 此时光标移动到结尾 
 4 print(content) 
 5 
 6 f.seek(0)   # 再次将光标移动到开头 
 7 f.seek(0, 2)    # 将光标移动到结尾 
 8 content2 = f.read()  # 读取内容. 什什么都没有 
 9 print(content2) 
10 
11 f.seek(0)   # 移动到开头 
12 f.write("张国荣")  # 写⼊入信息. 此时光标在9  中⽂文3 * 3个 = 9 
13 f.flush() 
14 f.close()

    文件修改:  创建新文件. 把修改后的内容写入新文件. 删除老文件. 重命名新文件

 1 import os
 2 
 3 with open("吃的", mode="r", encoding="utf-8") as f1, \
 4         open("吃的_副本", mode="w", encoding="utf-8") as f2:
 5     for line in f1:
 6         s = line.replace("", "")
 7         f2.write(s)
 8 
 9 os.remove("吃的") # 删除文件
10 os.rename("吃的_副本", "吃的")    # 重命名文件

    

猜你喜欢

转载自www.cnblogs.com/child-king/p/9299693.html