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

小年华°Moon 2024-10-31 12:00:35

这是我参加朝闻道知识分享大赛的第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(字符数) # 省略字符数将读取至文件末尾
# 读取文件中的每行
forin 对象名:

(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) 字节串

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

关闭文件

略(与文本文件相同)

...全文
28 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,041

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧