当前位置: 首页 > news >正文

Python的文件

1、Open 读
open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

文件操作:打开、读取、写入、关闭文件(避免冲突)

文件操作场景:excel测试数据读取,配置文件的读取、接口-文件上传、日志记录-写入文件…

# 打开文件--创建file对象
f = open("py73", encoding="utf8")
print(f)  # <> 是一个对象,包含各种方法

# 读取内容
print(f.read())

# 关闭文件 -- 操作完毕
f.close()

2、Open 写
2、写入内容到文件:

  • mode参数,默认r读权限,无写的权限,报错io.UnsupportedOperation: not writable
  • 设置mode参数值:
    • w: 覆盖写入,会把之前的内容全部覆盖 。文件可以存在【直接覆盖写入】,也可以不存在【新建】
    • a: 追加写入 不会覆盖掉原来原来的内容 ,安全一些:文件可以存在【直接追加写入】 也可以不存在【新建】
    • x: 打开新的文件并写入内容,效果是会创建一个新的文本并写入内容 :open的文件不能存在,存在报错
# 打开文件--创建file对象
f = open("p3", encoding="utf8", mode='a')
# print(f)  # <> 是一个对象,包含各种方法

# 写入内容
f.write("飞流直下三千尺")
# 换行写入
f.write("\n飞流直下三千尺!")

# 关闭文件 -- 操作完毕
f.close()

3、Open 读取二进制图片和视频
读取和写入二进制、图片、视频等

  • 图片文件,不能使用encoding=“utf8” 编码
  • mode需要b,表示操作二进制数据:读-rb 写-wb

-rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
-wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

# 打开文件--创建file对象
f = open("lemon1.png", mode='rb')
# print(f)  # <> 是一个对象,包含各种方法
# 读取图片文件
filedata = f.read()
print(filedata)
# 关闭文件 -- 操作完毕
f.close()

# 图片数据-文件写入
f1 = open("lemon2.png", mode='wb')
f1.write(filedata)
f1.close()

4、按行读取:
readlines():读取文件的所有行-字符串(包含最后换行符),并将它们作为列表返回。

  • 分别取到每一行的数据,遍历-for循环
  • 逐行读取的数据最后有一个换行符,但是一般不需要换行符,去掉换行符 – strip()
    readline():读取文件的一行,包含换行符。若想分批次读取并且每次读取1行,你可以结合readline()和循环来实现。
# 打开文件--创建file对象
f = open("py73", encoding="utf8")

# 读取内容--readlines
data = f.readlines()
print(f"readlines:{data}")  # 返回  ['飞流直下三千尺飞流直下三千尺!']
new_data = []  # 空列表
for i in data:
    new_i = i.strip("\n")  # 飞流直下三千尺
    print(new_i)   # new_i是字符串
    new_data.append(new_i)
print(new_data)
f.close()


# 读取内容 - readline
# data = f.readline()  # '飞流直下三千尺'
# print(data, type(data))
# print(f.readline())
# print(f.readline())

# 逐行读取每一行数据 + 结合循环实现 -- 了解
while True:
    data = f.readline()
    if not data:  # 读取到文件末尾,data返回是空字符串
        break
    print(data, end="")  # 读取每一行包含换行符,打印不需要换行,end=''避免换行

# 关闭文件 -- 操作完毕
f.close()

5、按行写入

# 打开文件--创建file对象
f = open("py03", encoding="utf8", mode='a')

# 写入内容
# f.write("\n飞流直下三千尺")
# 逐行写入-- 一个字符串列表/元组的每一个元素
data = ['\n飞流直下三千尺', str(10000)]
f.writelines(data)

# 关闭文件 -- 操作完毕
f.close()

6、优化

"""
with的写法打开文件:可以自动关闭文件;with语句,自带close,不需要手动写。
"""
with open("py03", encoding="utf8", mode='a') as f:
    f.write("\n飞流直线三千尺,意")

总结:
按行读取和按行写入:
按行读取:
readlines():读取文件的所有行,并将它们作为列表
返回。
readline():读取文件的一行,包含换行符。若想分批
次读取并且每次读取1行,你可以结合readline()和循环来
实现。
逐行写入:
writelines():用于将一个字符串列表/元组的每一个元素,
逐个写入文件。

相关文章:

  • 使用dockerfile创建镜像
  • Ray|RLLib|Tune学习笔记
  • Windows10下docker desktop命令行操作指南(大部分也适用于Linux)
  • cu118 安装vllm 极简教程 踩坑笔记
  • PostgreSQL_安装部署
  • 基于ShuffleNet的雷达辐射源信号识别
  • 2.1 掌握XML基础知识
  • ASE5N20-ASEMI智能家居专用ASE5N20
  • 机器人交互系统 部署构建
  • 《苍穹外卖》SpringBoot后端开发项目核心知识点整理(DAY1 to DAY3)
  • 怎么删除百度搜索下拉框里的搜索引导词
  • 如何像Manus一样构建智能体
  • 【Spring】基础/体系结构/核心模块
  • Oracle比较好的几本书籍
  • Java网络编程初阶
  • 解决jsch远程sftp连接报错:Exception:Algorithm negotiation fail
  • 通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称
  • 大模型开源的工具包有哪些特殊符号可以使用;SEP 是什么
  • GitLab的Dockerfile 追踪
  • linunx ubuntu24.04.02装libfuse2导致无法开机进不了桌面解决办法
  • 北京做网站哪个好/怎么做网络广告
  • 网站开发的工资/免费网络营销方式
  • 万网博通官网/seo最好的工具
  • wordpress导航网站/搜索引擎是软件还是网站
  • 洛阳哪里有做网站的/宝鸡网站开发公司
  • 长沙微网站制作/网站外包公司有哪些