Python入门到精通(五):文件操作(增、删、改)

一、 简介

在编程工作中文件操作还是比较常见的,基本文件操作包括:创建、读、写、关闭等,Python 中内置了一些文件操作函数,我们使用 Python 操作文件还是很方便的。

1.1、文件的概念

  • 计算机的⽂件,就是存储在某种⻓期储存设备上的⼀段数据 ;

  • ⻓期存储设备包括:硬盘、U 盘、移动硬盘、光盘 ;

  • ⽂件的作⽤是可以将数据长期保存下来, 在需要的时候再使用。

1.2、文件的种类

1、文本文件

  • 可以使⽤⽂本编辑软件查看;

  • 例如:python 的源程序 ,txt 文本文件、doc、ppt、表格  

2、 二进制文件

  • 二进制文章是以01方式进行存储的

  • 保存的内容不是给⼈直接阅读的,⽽是提供给其他软件使⽤的

  • 例如:图⽚⽂件、⾳频⽂件、视频⽂件等等 ;

  • ⼆进制⽂件不能使⽤⽂本编辑软件查看。

二、 基本操作

2.1 创建

Python 使用 open() 函数创建或打开文件,语法格式如下所示:

open("d:/python.txt,""w")
# 打开d盘根目录下的python.txt文件 打开方式为只写
# 建议使用绝对路径打开文件  打开方式不指定默认为只读
模式 描述
r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
+ 打开一个文件进行更新(可读可写)。
b 二进制模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.2 写入

上面我们创建的文件 pythont.txt 没有任何内容,我们向这个文件中写入一些信息,对于写操作,Python 文件对象提供了两个函数,如下所示:

函数 描述
write(str) 将字符串写入文件,返回写入字符长度
writelines(s) 向文件写入一个字符串列表

 接下来我们向文件写入一些信息:

doc = "hallo"                         # 创建一个字符串 字符串内容为hallo
file = open("d:/python.txt","w")      # 打开d:/python.txt 方式为只写
file.write(doc)                       # 写入"doc"
file.close()                          # 关闭文件

2.3 读取

之前我们已经向文件中写入了一些内容,现在我们读取一下,对于文件的读操作,Python 文件对象提供了三个函数,如下所示:

函数 描述
read(size) 读取指定的字节数,参数可选,无参或参数为负时读取所有
readline() 读取一行
readlines() 读取所有行并返回列表
file = open("d:/python.txt","r")
print(file.readline())              # 输出读取到的一行内容
print(file.read())                  # 输出读取全部内容
file.seek(0)                        # 将鼠标指针返回到开始
print(file.readlines())             # 读取所有行输出数据类型为列表


file.close()

2.4 定位

Python 提供了两个与文件对象位置相关的函数,如下所示:

函数 描述
tell() 返回文件对象在文件中的当前位置
seek() 将文件对象移动到指定的位置;offset 表示移动的偏移量;whence 为可选参数,值为 0 表示从文件开头起算(默认值)、值为 1 表示使用当前文件位置、值为 2 表示使用文件末尾作为参考点
file = open("d:/python.txt","r")          # 打开文件
print(file.read())                        
print(file.tell())                        # 显示现在指针所在位置
file.seek(0)                              # 将指针移动到0的位置
print(file.tell())                        
print(file.readlines())

file.close()                              # 关闭文件

2.5、指定编码类型

file = open(文件名, 打开方式, encoding="编码")

三、删除(修改)指定位置内容

利用指针位置可以删除某行内容、方法:

while True:
# 创建循环循环读取每一行    
    posi1 = file.tell()
# 保存指针读取前位置               
    user = file.readline()
# 保存读取内容
    posi = file.tell()
# 保存指针读取内容完毕位置
    if user != "":
# 判断是否是最后一行
        try:
            user.index(name)
           # 判断当前一行是否是要删除的行
            file.seek(posi)
           # 移动指针到读取完毕后的位置
            username = file.read()
           # 读取指针后的内容到username
            file.close()
            file = open("d:/pyx/userdata.txt", "r+", encoding="utf-8")
            file.truncate(posi1)
           # 删除读取前位置以后的内容
            file.close()
            file = open("d:/pyx/userdata.txt", "a", encoding="utf-8")
            file.write(username)
           # 写入保存的内容
            file.close()

这个方法也可以用于修改 。

以上就是本次所有内容,觉得有用的小伙伴可以点个关注。

猜你喜欢

转载自blog.csdn.net/weixin_67281781/article/details/123634577