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

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

关闭文件

略(与文本文件相同)

...全文
89 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文针对网型T型三电平逆变器的低电压穿越(LVRT)能力及其综合控制策略开展深入研究,重点分析电网电压跌落条件下逆变器的动态响应特性与稳定性控制方法。研究基于Simulink平台构建详细的系统仿真模型,融合改进的电流环控制策略与中点电位平衡控制算法,有效提升逆变器在故障工况下的电流跟踪精度、过流抑制能力和直流侧中点电压稳定性。通过多场景仿真验证,所提出的综合控制策略能够显著增强逆变器在低电压穿越过程中的鲁棒性与电能质量,确保新能源系统在电网扰动下的持续可靠并网运行。; 适合人群:电力电子、新能源发电、电力系统自动化等相关专业的研究生、科研人员及从事并网逆变器设计与控制的工程技术人员。; 使用场景及目标:①深入理解三电平逆变器在电网故障下的运行机理与控制挑战;②掌握低电压穿越技术中电流限幅、故障响应及中点电位平衡的核心控制方法;③应用于光伏、风电等新能源并网系统的控制策略开发与仿真验证; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数设计、中点电位观测与调节模块的实现逻辑,并通过对比不同电压跌落深度和控制策略的仿真结果,深化对系统动态行为与控制性能的理解。
yolo算法港口码头船舶目标检测数据集 目标类别:['ship'] 中文类别:['船舶'] 训练集:16046 张 验证集:1971 张 测试集:983 张 总计:19000 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['ship'] 该数据集聚焦于港口码头及近海水域的船舶检测任务,涵盖多种类型船舶在不同天气、光照和水文条件下的真实场景。图像样本覆盖了货轮、客轮、拖船、油轮及工程船等典型船只,充分体现了海上交通与港口作业的复杂性与多样性。通过高精度标注,该数据集为海上智能监控、船舶识别与航行安全预警系统提供了高质量的数据支撑,具有重要的实际应用价值。 该数据集在训练集、验证集和测试集之间实现了科学合理的分布,训练集包含16046张图像,验证集1971张,测试集983张,总计19000张。这种分布结构确保了模型在训练过程中具备充足的样本学习能力,同时验证集与测试集规模适中,能够有效评估模型的泛化性能与稳定性,符合深度学习项目对数据划分的标准要求。 该数据集的标注工作严谨规范,所有船舶均采用精确边界框进行标注,覆盖了不同尺寸、姿态和视角下的目标实例。标注框紧密贴合船舶轮廓,未出现明显偏移或遗漏,且在复杂背景(如水面反光、雾天、桥梁遮挡)下仍保持高一致性。标注信息完整可靠,为后续模型训练提供了坚实基础。 该数据集可广泛应用于港口自动化管理、海上交通监控、船舶动态跟踪、航安全预警以及海洋执法等领域。其丰富的场景覆盖和多样化的船舶类型使其特别适用于智慧港口建设、海上搜救系统开发及航运物流智能化升级,能够有效提升相关系统的识别准确率与响应效率,推动海洋经济数字化转型。

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创作助手写篇文章吧