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

Python(七)- 文件操作

目录

文件操作

打开文件

读数据

写数据

关闭文件

文件读写实例

文件写

文件读

读数据类型

备份文件

os模块

目录的具体操作


文件操作

在Python中操作文件记录信息的步骤:

(1)打开文件,或新建一个文件; open()
(2)读取或写入数据内容; read() / write()
(3)关闭文件。 close()

打开文件

函数名含义
open(name, mode)创建一个新文件或打开一个已经存在的文件,name指的是文件名,mode指的是访问模式。

常见的mode访问模式有:

模式描述
r以读数据的方式打开文件,这是默认模式,可以省略。
rb以读二进制原始数据的方式打开文件。
w以写数据的方式打开文件。如果文件已存在,则打开文件写入数据是会覆盖原有内容。如果文件不存在,则创建新文件。
wb以写二进制原始数据的方式打开文件。
a使用追加内容形式,打开一个文件。通常用于写数据,此时会把新内容写入到已有内容后。

说明:

(1)访问模式r表示read,即读;

(2)访问模式w表示write,即写。

读数据

该文件必须存在

函数名含义
read()从某文件中,一次性读完整的数据。
readlines()按行的方式把文件中的完整内容进行一次性读取,并返回一个列表。
readline()一行一行读文件中的数据内容。

说明:

当访问模式有r时,可以读数据。

写数据

函数名含义
write(seq)给某文件写数据。

说明:

(1)当访问模式有w时,可以写数据;

(2)当使用访问模式a时,用于追加数据内容,也可以写入数据。

关闭文件

函数名含义
close()关闭文件。

文件读写实例

文件写

# 1 普通写
# # 1.1 打开文件
writer = open("./file/a_hello.txt", "w") # 默认写, 覆盖效果
#
# # 1.2 操作文件
writer.write("hello")
writer.write("\nworld")
#
# # 1.3 关闭文件
writer.close()# 2 写 追加
# # 2.1 打开文件
writer = open("./file/a_hello.txt", "a") # a, append 追加
#
# # 2.2 操作文件
writer.write("\nhello python")
writer.write("\nhello hadoop")# # 2.3 关闭文件
writer.close()# 3 写 中文
# # 3.1 打开文件
writer = open("./file/a_hello.txt", "w", encoding="utf-8") # a, append 追加
#
# # 3.2 操作文件
writer.write("黑马程序员")
writer.write("\n传智播客")
#
# # 3.3 关闭文件
writer.close()# 4 简化
with open("./file/b_hello.txt", "w", encoding="utf-8") as writer:writer.write("黑马程序员")writer.write("\n传智播客")writer.write("\n字节跳动")

文件读

# # 1.2 读取文件
content = reader.read()
print(content)
#
# # 1.3 关闭文件
reader.close()# 2 读 中文
# # 2.1 打开文件
reader = open("./file/b_hello.txt", 'r', encoding='utf-8')
#
# # 2.2 读取文件
content = reader.read()
print(content)
#
# # 2.3 关闭文件
reader.close()

读数据类型

函数名含义
readlines()按行的方式把文件中的完整内容进行一次性读取,并返回一个列表。
readline()一行一行读文件中的数据内容。
read()从某文件中,一次性读完整的数据。
# 3 读 简化
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:content = reader.read()print(content)# 4 读 一次读取所有的行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:lines = reader.readlines()print(lines)print(type(lines))print("-" * 50)for line in lines:print(line, end='')# 5 读 一次读取一行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:line = reader.readline()print(line, end="")print(type(line))print(len(line))print("-" * 50)line = reader.readline()print(line, end="")print(type(line))print(len(line))print("-" * 50)line = reader.readline()print(line, end="")print(type(line))print(len(line))print("-" * 50)line = reader.readline()print(line, end="")print(type(line))print(len(line))print("-" * 50)line = reader.readline()print(line, end="")print(type(line))print(len(line))print("-" * 50)# 5.2 读 优化 一次读取一行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:while True:line = reader.readline()if len(line) == 0:breakprint(line, end='')

备份文件

将原文件的数据内容进行重新写入到另一个新文件中。

# 目标6: r vs rb 的区别
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:content = reader.read()print(content)print(type(content))print("-" * 100)with open("./file/b_hello.txt", 'rb') as reader:content = reader.read()print(content)print(type(content))# 目标7: 备份
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader, open("./file/b_hello[备份].txt", 'w', encoding='utf-8') as writer:# 合并式# writer.write(reader.read())# 分解式content = reader.read()writer.write(content)with open("./file/c.mp4", 'rb') as reader, open("./file/c[备份].mp4", 'wb') as writer:# 合并式# writer.write(reader.read())# 分解式content = reader.read()writer.write(content)

os模块

Python中的os模块包含有操作系统所具备的功能,如查看路径、创建目录、显示文件列表等。

# 导入os模块
import os

在Python中,os模块的常用函数分为两类:

(a)通过os.path调用的函数

(b)通过os直接调用的函数

在Python的os模块中,通过os.path常用函数:

函数名含义
exists(pathname)用来检验给出的路径是否存在。
isfile(pathname)用来检验给出的路径是否是一个文件。
isdir(pathname)用来检验给出的路径是否是一个目录。
abspath(pathname)获得绝对路径。
join(pathname,name)连接目录与文件名或目录。
basename(pathname)返回单独的文件名。
dirname(pathname)返回文件路径。
# (1)在某目录下手动新建day05/file目录与day05/file/hello.txt文件;
# (2)判断file/hello.txt是否存在、是否是文件、是否是目录、获取绝对路径名、获取单独的文件名;
# (3)执行程序,观察效果。
import os
#
# path = "./file/a_hello.txt"
path = "D:/0000_资料分享/01_大数据/07_python/代码/pythonProject3/pythonProject_2/day05/file/a_hello.txt"
#
print(os.path.exists(path)) # True
print(os.path.isfile(path)) # True
print(os.path.isdir(path)) # False
#
print(os.path.abspath(path)) # D:\0000_资料分享\01_大数据\07_python\代码\pythonProject3\pythonProject_2\day05\file\a_hello.txt
print(os.path.basename(path)) # a_hello.txt
print(os.path.dirname(path)) # ./fileimport os# (1)获取当前工作目录;
print(os.getcwd()) # D:\0000_资料分享\01_大数据\07_python\代码\pythonProject3\pythonProject_2\day05# (2)获取day05/file下的文件或目录列表信息;
path = "./file"
result = os.listdir(path)
print(result)
print(type(result))
for e in result:print(e)# (3)思考:若要在file下新建hello/world/python目录,该怎么做呢?
path = "./file/hello/world/python"if not os.path.exists(path):os.makedirs(path)

目录的具体操作

函数名含义
getcwd()获得当前工作目录,即当前Python脚本工作的目录路径。
system(name)运行shell命令。
listdir(path)返回指定目录下的所有文件和目录名,即获取文件或目录列表。
mkdir(path)创建单个目录。
makedirs(path)创建多级目录。
remove(path)删除一个文件。
rmdir(path)删除一个目录。
rename(old, new)重命名文件。
http://www.lryc.cn/news/448225.html

相关文章:

  • Docker技术深度解析与实践案例
  • llama_deploy
  • 平衡二叉搜索树插入的实现
  • ROS理论与实践学习笔记——2 ROS通信机制之通信机制实践
  • CDGA|数据治理:策略与价值的深度融合
  • 49. 建模软件绘制3D场景(Blender)
  • 如何使用 DomCrawler 进行复杂的网页数据抓取?
  • 维修服务品牌小程序渠道客获
  • 【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!
  • Kafka系列之:安装使用kafka_exporter详细步骤
  • Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor
  • 【anki】显示 “连接超时,请更换网络后重试” 怎么办
  • 第一批学习大模型的程序员,已经碾压同事了,薪资差距都甩出一条街了...
  • Unity NetCode 客户端连接不上服务器,局域网模式 Failed to connect to server.
  • C++远端开发环境安装(centos7)
  • LaTeX 编辑器-TeXstudio
  • [深度学习]循环神经网络
  • 景联文科技精准数据标注:优化智能标注平台,打造智能未来
  • 商场促销——策略模式
  • 万字长文,AIGC算法工程师的面试秘籍,推荐收藏!
  • 一些超好用的 GitHub 插件和技巧
  • 记Flink SQL 将数据写入 MySQL时的一个优化策略
  • QT-自定义信号和槽对象树图形化开发计算器
  • C# 字符串(String)的应用说明一
  • Redis缓存淘汰算法详解
  • Sklearn 与 TensorFlow 机器学习实用指南
  • RabbitMQ 界面管理说明
  • 设备管理与点巡检系统
  • 计算机网络的整体认识---网络协议,网络传输过程
  • Battery management system (BMS)