python摸爬滚打之day8---文件操作

1、文件读写的两种方式

  1,  f = open("文件位置",mode = "r", encoding = "utf-8")

    content = f.read()

   2,  with open("文件位置",mode = "r", encoding = "utf-8") as f:

    content = f.read()

  注意: 读取完的文件句柄一定要关闭. 即f.close().

2、r , w , a , r+ , w+ , a+ 

 r: 只读

  read(): 读取文件的所有内容.

  read(n): 读取文件的前n个字符. 如果继续读取的话会在当前位置继续往后读, 而不是从头开始.

      (如果以rb模式读取的话, read(n) 表示读取前n个字节).

  readline(): 一次读取一行内容, 每行最后面有换行符 "\n". 继续读取的话会在当前位置继续往后读.

  readlines(): 读取全部内容, 并将每行内容作为一个元素放进列表中. 继续读取的话会在当前位置继续往后读.

 w: 只写

  如果文件不存在, 则先创建文件, 再写进去; 如果文件已经存在, 则先删除全部旧内容, 再写新内容.

 a: 追加

  不论是a 还是a+ , 不管光标在什么位置, 都是在文件末尾添加新内容.

 r+: 读写

  光标位置是在开头的, 读完之后再写入, 写进文件末尾.

  f = open("文件位置",mode = "r", encoding = "utf-8")

  content = f.read()

  f.write("内容")

  注意: 如果先写再读, 则会在文件开头位置进行修改(不是添加),  然后读取修改内容后面的内容.(错误方式)

 w+: 写读

  先将内容清空, 然后再写进去, 光标位于文件末尾, 读取文件内容为空.

 a+: 追加读 

  不论是先读还是后读都是读取不到内容的.

 rb, wb

  二进制的方式读取内容, 不用声明encoding编码方式, 常用于传输非文本内容(图片,音乐,视频等文件).

3、seek(), tell()

 seek(): 光标移动到某位置. 

  f = open("文件位置",mode = "r", encoding = "utf-8")

  f.seek(0)  ----> 光标移动到开头位置

  print(f.read())  ----> 读到全部内容

  f.seek(0,2)  ----> 光标移动到文件末尾

  print(f.read())  ----> 读不到内容

  注意: seek(参1,参2)  参1:表示偏移多少单位(字节为单位), 参2: 表示偏移到什么位置(0:文件开头; 1:当前位置; 2:文件末尾)

 tell(): 光标当前位置.

  输出的结果也是以字节为单位.

4、修改文件

  只能将文件读取到内存中然后修改内容, 重新复制一份然后删除旧文件, 给新文件命名.

1 import os
2 with open("诗词","r",encoding="utf-8") as f ,\
3      open("诗词_副本","w",encoding="utf-8") as s:
4     for i in f:
5         i= i.replace("","")
6         s.write(i)
7 os.remove("诗词")
8 os.rename("诗词_副本","诗词")
文件修改

猜你喜欢

转载自www.cnblogs.com/bk9527/p/9857784.html