Python-文件操作| “朝闻道”知识分享大赛
这是我参加朝闻道知识分享大赛的第35篇文章。
文件管理
基础概念
(1)文件
定义:保存在持久化存储设备(硬盘、U盘、光盘..)上的一段数据。
例如:文本,图片,视频,音频等。
(2)路径
-- 定义:对文件存储在计算机中位置的标识,除Window使用反斜杠"\"以外,其他操作系统使用斜杠"/"分隔。
-- 当前路径:正在执行的Python文件所在目录。
-- 绝对路径:从操作系统根目录开始,Window以盘符"C:"、"D:",OS X或Linux以斜杠"/"开始。
-- 相对路径:从当前目录开始。

pathlib模块
对os模块中与文件操作相关的封装,是基于面向对象的跨平台路径操作模块。
官方文档:https://docs.python.org/zh-cn/3/library/pathlib.html?highlight=pathlib
创建路径
(1) 语法
# 导入路径类
from pathlib import Path
# 相对路径
对象名 = Path(相对路径)
# 当前工作目录的绝对路径
对象名 = Path.cwd()
# 绝对路径 + 相对路径
对象名 = Path.cwd().joinpath("目录1","目录2")
路径信息
对象名.absolute() # 绝对路径(路径类型)
对象名.name # 带后缀的完整文件名(str类型)
对象名.stem # 文件名不带后缀(str类型)
对象名.suffix # 文件后缀(str类型)
对象名.parent # 上一级路径(路径类型)
对象名.parts # 分割路径(tuple类型)
对象名.exists() # 路径是否存在(bool类型)
对象名.is_file() # 是否文件(bool类型)
对象名.is_dir() # 是否目录(bool类型)
对象名.is_absolute() # 是否绝对路径(bool类型)
对象名.stat().st_ctime # 创建时间(时间戳)
对象名.stat().st_atime # 访问时间(时间戳)
对象名.stat().st_mtime # 修改的时间(时间戳)
对象名.stat().st_size # 文件大小(字节Bete)
搜索目录
(1) 语法
# 注意:路径对象必须是目录,不能是文件
# 搜索当前目录所有路径(一层)
生成器 = 对象名.iterdir():
# 根据通配符搜索当前目录所有路径(一层),*表示任意多个字符
# 例如:*.py表示所有Python文件
生成器 = path.glob("通配符"):
# 根据通配符递归搜索当前目录所有路径(多层)
生成器 = 对象名.rglob("通配符")
(2) 示例
# (当前目录为month01)
# 打印每天名称为demo的文件
for item in Path.cwd().glob(r"*/demo*"):
print(item)
# 打印所有后缀为.py的文件
list_file = Path.cwd().rglob(r"*.py"):
print(item)
新建路径
# 新建文件
对象名.touch()
# 新建目录
对象名.mkdir()
对象名.mkdir(exist_ok=True) # 忽略目录存在时的报错
重命名
(1) 语法
对象名.rename(新路径对象)
(2) 示例:修改month01\day03\homework\exercise01.py文件名称或后缀
# 修改前:day03/homework/exercise01.py
old_file = Path("day03", "homework", "exercise01.py")
new_file_name = old_file.with_name("new_exercise.py")
# 修改后:day03/homework/new_exercise.py
old_file.rename(new_file_name)
删除路径
对象名.unlink() # 删除文件(永久删除,回收站不存在)
对象名.rmdir() # 删除目录(目录必须为空)
shutil
对os模块中与文件操作相关的扩容,全称shell utility,意为shell 实用程序;主要提供了文件拷贝、删除、移动等功能。
官方文档:https://docs.python.org/zh-cn/3/library/shutil.html?highlight=shutil
拷贝
(1) 语法
# 拷贝文件
shutil.copy(源文件,目标文件或目录)
# 拷贝目录(目标目录不能存在)
shutil.copytree(源目录,目标目录)
(2) 示例:将day03目录备份到backup目录中
import time
current_time = time.strftime("%Y_%m_%d", time.localtime())
shutil.copytree("day03", Path("backup", current_time))
递归删除目录
shutil.rmtree(路径) # 永久删除,回收站不存在
文件读写
读 :即从文件中获取内容
写 :即修改文件中的内容
基本步骤:打开文件,读写文件,关闭文件
官方文档:https://docs.python.org/zh-cn/3/library/functions.html?highlight=open#open
文本文件
打开后会自动解码为字符,如txt文件,py文件。
打开文件
(1) 语法
对象名 = open(文件路径,"操作模式",encoding="编码方式")
(2) 操作模式

(3) 编码方式
Linux操作系统文本文件默认为"utf-8"
Windows操作系统文本文件默认为"gbk"
读写文件
(1) 读取
# 读取文件中指定数量字符
字符串 = 对象名.read(字符数) # 省略字符数将读取至文件末尾
# 读取文件中的每行
for 行 in 对象名:
(2) 写入
# 将字符串写入到文件
字符数 = 对象名.write(字符串)
关闭文件
文件作为操作系统资源,打开后必须关闭,避免超出操作系统限制。
(1) close方法
对象名 = open(文件路径)
try:
操作文件对象
finally:
对象名.close()
(2) with操作
对try…finally语法的简化,当with代码块全部执行完后,无论是否产生异常,都会自动释放资源
with open(文件路径) as 对象名:
通过对象名操作文件
二进制文件
内部编码为二进制码,无法通过文字编码解析,如压缩包,音频,视频,图片等。
打开文件
(1) 语法
对象名 = open(文件路径,"操作模式")
(2) 操作模式

读写文件
(1) 读取
# 读取文件中指定数量字节
字节串 = 对象名.read(字节数) # 省略字节数将读取至文件末尾
(2) 写入
# 将字节串写入到文件
字节数 = 对象名.write(字节串)
(3) 字节串
以字节类型表达数据,处理二进程数据更方便。
关闭文件
略(与文本文件相同)
相关推荐
第十届蓝桥杯大赛青少年创意编程Python组省赛(含答案).rar
Python的turtle库是一个非常适合初学者的图形绘制工具,它提供了一种直观的方式来编写命令,让一个虚拟的“海龟”在屏幕上移动并画出线条。
python蓝桥杯大赛青少年创意编程和模拟题.rar
"Python蓝桥杯大赛青少年创意编程和模拟题.rar"这个压缩包文件主要涵盖了与Python编程相关的教育资源,特别是针对"蓝桥杯"这一全国性青少年编程竞赛。
蓝桥杯大赛 青少年创意编程 Python组 资料集-2022.01.21.pdf
蓝桥杯大赛相关资源* 蓝桥杯大赛青少年创意编程 Python 组试题讲解:该资源提供了蓝桥杯大赛青少年创意编程 Python 组试题的解析和解答,涵盖了 Python 的基础知识和高级知识。
全国职业院校技能大赛高职组”大数据“项目比赛资料
全国职业院校技能大赛高职组“大数据”项目比赛资料是一份重要的教育资源,主要涵盖了2017年大赛的任务内容。在大数据领域,此类竞赛旨在检验学生对大数据技术的理解、应用及解决实际问题的能力。
第十届蓝桥杯大赛青少年创意编程Python组省赛试题
蓝桥杯大赛一直以来都是检验学生Python编程技能的重要平台,对于参赛者来说,这是一次展示自我、锻炼技能和学习新知的宝贵机会。


