相识python --------文件操作

文件操作

  1. 找回文件的位置

  2. 进行一些操作

    r------ read

    w------write

    a-------追加

    rb----读字节

    wb ab r+ w+ a+

  3. 关闭文件

open() 打开 open通过Python控制操作系统进行打开文件

file 文件的位置

mode 默认不写就是r

encoding 文件的编码

文件只能读取一次

读操作

打开一个文件的(存储地址)

f = open("D:Python_s25day08小姐姐电话号",mode="r",encoding="utf-8")

print (f.read()) 全部读取

print(f.read(3)) 按照字节读取

print(freadline()) 默认尾部有一个

print(f.readline().strip()) 读取一行 将 去除

print(f.readlines()) 一行一行的读 全部存储在列表中

绝对路径

open (r"r"D:Python_s25day08 1",mode="r",encoding="utf-8"))

print(f.read())

相对路经

f = open ("t1",mode = "r",encoding = "utf-8")

print (f.read())

路经转义:.

1."D:Python_s25day08 1"

2.r"D:Python_s25day08 1" -- 推荐使用

路经:

​ 1.绝对路径:从磁盘开始查找

​ 2.相对路径:相对某个文件进行查找

字节操作不能指定 encoding编码

f = open("timg.jpg",mode="rb")

r 和 rb 的区别:

​ 1.r需要指定encoding,rb不需要

​ 2.r模式中的read(3)) 按照字节读取,rb 模式中的read(3)) 按照字节读取

read 和readlines如果文件较大时,会出现内存外溢

解决方案: 用for循环

当文件较大时,使用for循环进行读取

f = open ('t1',mode = 'r',encoding= "utf-8")

For i in f :

​ print(i.strip())

写操作

w 操作: ========清空写(写的是文本))

  1. 先清空文件
  2. 写入内容

当模式为w和a时,有文件就用当前文件,没有文件就创建一个文件

ff = open("a",mode = "w", encoding="utf-8")

ff.write("123") 写的内容必须是字符串

ff = open("a1",mode="w",encoding="utf-8")

ff = open("a1",mode="w",encoding="utf-8")

ff.write("[1,2,3,4] ") # 写的内容必须是字符串

ff.write('1111 ') # 写的内容必须是字符串

ff.write('2222 ') # 写的内容必须是字符串

wb -- 清空写(写字节)

f = open('timg.jpg',mode="rb")

f1 = open("g1.jpg",mode="wb")

content = f.read()

f1.write(content)

a -- 追加写(文本)

f = open("b1",mode="a",encoding="utf-8")

f.write("你好啊 ")

f.write("我好啊 ")

f.write("他好啊 ")

f.write("大家好啊 ")

ab -- 追加写(字节)

读写 (有点用)

使用方式是错误的

f = open("b1",mode="r+",encoding="utf-8")

f.write("今天是周一")

print(f.read())

正确的操作:

f = open("b1",mode="r+",encoding="utf-8")

print(f.read())

f.write("今天是周一")

w+ 写读

f = open("b1",mode="w+",encoding="utf-8")

f.write("今天是周一")

f.seek(0) # 移动光标

print(f.read())

f = open("b1",mode="w+",encoding="utf-8")

f.write("今天是周一")

f.seek(0) # 移动光标

f.write("啊啊啊啊啊啊")

f.seek(0)

print(f.read())

a+ 追加读 # 坑

f = open("b1",mode="a+",encoding="utf-8")

f.write("今天是周一")

f.seek(0) # 移动光标

f.write("啊啊啊啊")

print(f.read())

其他操作:

seek() 移动光标

f.seek(0,0) # 移动光标到文件的头部

f.seek(0,1) # 移动光标到当前位置

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

.seek(6) # 光标是按照字节移动

f = open("a1","r",encoding="utf-8")

print(f.read(5))

f.seek(0,0) # 移动光标到文件的头部

f.seek(0,1) # 移动光标到当前位置

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

print(f.read())

f = open("c1","r",encoding="gbk")

f.seek(6) # 光标是按照字节移动

print(f.read(3))

查看光标:

tell 查光标

f = open("c1","r",encoding="gbk")

print(f.read(3))

print(f.tell()) # 按照字节进行计算

刷新: 自己感兴趣自己去了解一下

截取: 自己感兴趣自己去了解一下

修改文件:

import os # 操作系统交互的接口

f = open('a2',"r",encoding="utf-8")

f1 = open("a1","w",encoding="utf-8")

for i in f:

i = i.replace("日","天")

f1.write(i)

f.close()

f1.close()

os.remove("a2") # 删除不能找回

os.rename("a1","a2")

import os # 操作系统交互的接口

f = open('a2',"r",encoding="utf-8")

f1 = open("a1","w",encoding="utf-8")

for i in f:

i = i.replace("天","日")

f1.write(i)

f.close()

f1.close()

os.rename("a2","a3")

os.rename("a1","a2")

考点:

import os # 操作系统交互的接口

f = open('a2',"r",encoding="utf-8")

f1 = open("a1","w",encoding="utf-8")

i = f1.read().replace("天","日") # 将文件中部内容读取 容易导致内存溢出

f1.write(i)

f.close()

f1.close()

os.rename("a2","a3")

os.rename("a1","a2")

with open("a3","r",encoding="utf-8")as f,

open('a2',"r",encoding="utf-8")as f1:

print(f.read())

print(f1.read())

1.自动关闭文件

2.同一时间操作多个文件

文件操作的目的:

1.持久化: 永久存储

原文地址:https://www.cnblogs.com/x-h-15029451788/p/11342797.html