Python-文件操作| “朝闻道”知识分享大赛

小年华°Moon 小年华°Moon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

这是我参加朝闻道知识分享大赛的第35篇文章。

文件管理

基础概念

(1)文件

定义:保存在持久化存储设备(硬盘、U盘、光盘..)上的一段数据。

例如:文本,图片,视频,音频等。

(2)路径

-- 定义:对文件存储在计算机中位置的标识,除Window使用反斜杠"\"以外,其他操作系统使用斜杠"/"分隔。

-- 当前路径:正在执行的Python文件所在目录。

-- 绝对路径:从操作系统根目录开始,Window以盘符"C:"、"D:",OS X或Linux以斜杠"/"开始。

-- 相对路径:从当前目录开始。

1654839006679

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) 操作模式

1656555588338

(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) 操作模式

1656555638966

读写文件

(1) 读取

# 读取文件中指定数量字节
字节串 = 对象名.read(字节数) # 省略字节数将读取至文件末尾

(2) 写入

# 将字节串写入到文件
字节数 = 对象名.write(字节串) 

(3) 字节串

以字节类型表达数据,处理二进程数据更方便。

关闭文件

略(与文本文件相同)

...全文

相关推荐

第十届蓝桥杯大赛青少年创意编程Python组省赛(含答案).rar

Python的turtle库是一个非常适合初学者的图形绘制工具,它提供了一种直观的方式来编写命令,让一个虚拟的“海龟”在屏幕上移动并画出线条。

__蟑螂恶霸__

python蓝桥杯大赛青少年创意编程和模拟题.rar

"Python蓝桥杯大赛青少年创意编程和模拟题.rar"这个压缩包文件主要涵盖了与Python编程相关的教育资源,特别是针对"蓝桥杯"这一全国性青少年编程竞赛。

淞元

蓝桥杯大赛 青少年创意编程 Python组 资料集-2022.01.21.pdf

蓝桥杯大赛相关资源* 蓝桥杯大赛青少年创意编程 Python 组试题讲解:该资源提供了蓝桥杯大赛青少年创意编程 Python 组试题的解析和解答,涵盖了 Python 的基础知识和高级知识。

dllglvzhenfeng

全国职业院校技能大赛高职组”大数据“项目比赛资料

全国职业院校技能大赛高职组“大数据”项目比赛资料是一份重要的教育资源,主要涵盖了2017年大赛的任务内容。在大数据领域,此类竞赛旨在检验学生对大数据技术的理解、应用及解决实际问题的能力。

不努力哪来的收获

第十届蓝桥杯大赛青少年创意编程Python组省赛试题

蓝桥杯大赛一直以来都是检验学生Python编程技能的重要平台,对于参赛者来说,这是一次展示自我、锻炼技能和学习新知的宝贵机会。

资源哥
评论
收藏 已收藏
分享
返回顶部