网站首页 > 技术文章 正文
一、前言
今天笔者想和大家聊聊python的基础,主要讲解Python中的文件基础操作等内容,是文件操作的基础讲解,在后续的自动化测试中会需要使用到,所以有兴趣的可以跟着我一起学习下去哟。
二、文件操作合集
2.1 open函数讲解
2.1.1 open函数创建
open函数主要用于打开一个文件,创建一个file的对象,最基础的用法如下代码所示:
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt")
# open函数也有返回值,返回的是一个文件对象
print(f)
2.1.2 读取文件所有(read)
往往我们要打开一个文件,都是要获取文件中的数据使用或阅读,我们可以通过open函数中的read方式来读取文件,读取出的文件类型为字符串类型:
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
print(read_my_file)
在文件为全英文时可直接操作打开,同样的一段代码,不同的文本内容,如果文件中含有中文、日文、韩文等内容,那么必须在open函数后加上utf-8或utf8,否则打印会出现UnicodeDecodeError的报错:
"""
错误版本,没有utf-8
"""
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
print(read_my_file)
"""
正确版本,有加utf-8,能够识别非英文内容
"""
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt", encoding="utf-8")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
# open函数也有返回值,返回的是一个文件对象
print(read_my_file)
2.1.3 读取文件第一行(readline)
除了读取文件的所有内容以外,我们还可以获取文件的第一行,文件的第一行获取我们通过readline来进行获取,先看一个错误的示例。
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt", encoding="utf-8")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
print(read_my_file)
# 读取文件的第一行内容
first = f.readline()
print(f"获取的第一行的数据是{first}")
如上代码和结果显示,实际上没有打印任何的内容,Python是根据光标位置来读取数据的,主要的原因是因为当我们读取完文件的所有内容时,光标处于最末尾的位置,如果我们想要读取第一行的数据有两种方式,第一种是关闭文件重新进行读取,第二种是把光标移动到最初始的位置并进行读取,那么我们先行演示第一种方式:
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt", encoding="utf-8")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
# open函数也有返回值,返回的是一个文件对象
print(read_my_file)
# 关闭文件
f.close()
# 重新以utf-8的格式读取该文件
f = open("love.txt", encoding="utf-8")
# 读取文件的第一行内容
first = f.readline()
print(f"获取的第一行的数据是{first}")
除了直接关闭文件以外,我们也可以通过移动光标的方式达成目的,将光标位置移动至最开始的位置,使用seek函数:
# open函数中有一个位置参数,我们需要传file,文件名
f = open("love.txt", encoding="utf-8")
# 读取一个文件我们使用read,它可以获取文件内容
read_my_file = f.read()
# open函数也有返回值,返回的是一个文件对象
print(read_my_file)
# # 关闭文件
# f.close()
# 重新以utf-8的格式读取该文件
f = open("love.txt", encoding="utf-8")
# 将光标移动到最初始的位置
"""
seek后接了0是代表的在光标的最初始位置,1和2并非代表第二个,第三个位置,每个数字有不同的含义,通常而言自动化测试用的更多的是0
如果有需要扩展的小伙伴可以深入了解
"""
f.seek(0)
# 读取文件的第一行内容
first = f.readline()
print(f"获取的第一行的数据是{first}")
2.1.4 读取文件所有行并保存为列表(readlines)
readlines用保存所有行并将数据保存至一个列表,每一个列表元素就是一行数据,每个元素末尾会有一个\n表示在这里换行:
f = open("love.txt", encoding="utf-8")
first = f.readlines()
print(f"获取的列表数据为:{first}")
2.1.5 文件写入模式(write)
写入文件我们使用write函数进行文件内容的写入,我们先看下错误例子:
f = open("love.txt", encoding="utf-8")
f.write("I love CPDD ")?
open函数中默认的mode参数是r,当我们想要写入数据时,需要修改为写入模式,如果你已经拥有了这个文件且有数据内容,每一次打开这个文件,以写入模式进行写入,会覆盖之前的写入,如果没有文件,则创建后直接写入:
# 默认mode="r",将mode修改为w
f = open("love.txt", encoding="utf-8", mode="w")
f.write("I love CPDD")
相信大家已经知道写入模式的弊端了,当有重要数据时,显然我们用写入模式有可能会覆盖掉重要数据,往往我们的写入是新增,例如新增备注、测试用例等等,那么我们需要使用到追加模式,只需要将mode的参数改为a即可:
f = open("love.txt", encoding="utf-8", mode="a")
f.write("I love China ")
通常而言测试用例以及备注一行就是一条,我们是需要换行写入数据的,那么换行新增数据,我们可以在写入的内容后加入\n,以此换行即可:
f = open("love.txt", encoding="utf-8", mode="a")
f.write("I love ShenZhen\n")
f.write("I love NBA\n")
2.1.6 自动关闭文件(with)
在我们打开一个文件后一定要记得关闭,否则其他人就会无法打开并使用,如下代码所示:
f = open("love.txt", encoding="utf-8", mode="r")
read = f.read()
print(read)
# close关闭这个文件,以便下次需要时能够成功打开并使用,否则会出现报错
f.close()
人嘛…毕竟还是会忘记一些事情的…写个100次1000次,总会有1次2次忘记的,Python怕我们忘记,贴心的准备with语句,以防止出现忘记的情况。
笔者更建议使用with语句,with语句的原理是,冒号:下子代码在全部执行完成后,自动执行close,以达到防忘的目的。
"""
第一种写法,这种写法需要我们使用close手动关闭这个文件
"""
f = open("love.txt", encoding="utf-8", mode="r")
read = f.read()
f.close()
"""
第二种写法,通过with语句,就不需要使用close关闭文件,防止忘记关闭文件在后续引来一些报错麻烦
格式:with open(文件参数,xxx,xxx) as 变量名:
"""
with open("love.txt", encoding="utf-8") as f:
f.read()
总结
今天的这篇文章就到这里了喜欢的小伙伴可以点赞收藏评论加关注哟。
- 上一篇: python 基础(四)
- 下一篇: 从源码角度看Linux内核中的open方法
猜你喜欢
- 2024-11-22 正点原子I.MX6U嵌入式Linux C应用编程:第二章《文件I/O基础》
- 2024-11-22 如何将Python函数输出内容同时打印到屏幕和文件
- 2024-11-22 3个重点,20个函数分析,浅析FFmpeg转码过程
- 2024-11-22 Linux驱动基础篇:hello驱动
- 2024-11-22 Python自带的库(open函数)读写txt、csv、json、XML、Excel文件
- 2024-11-22 UG NX OPEN二次开发实例:UF,C语言编程,创建圆柱体,API文档翻译
- 2024-11-22 openGauss SEQUENCE函数
- 2024-11-22 Python文件操作的步骤
- 2024-11-22 Python读取与写入Excel模块:openpyxl
- 2024-11-22 PHP imap_open函数任意命令执行漏洞
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)