一、 简介
在编程工作中文件操作还是比较常见的,基本文件操作包括:创建、读、写、关闭等,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()
这个方法也可以用于修改 。
以上就是本次所有内容,觉得有用的小伙伴可以点个关注。