1,041
社区成员




这是我参加朝闻道知识分享大赛的第35篇文章。
(1)文件
定义:保存在持久化存储设备(硬盘、U盘、光盘..)上的一段数据。
例如:文本,图片,视频,音频等。
(2)路径
-- 定义:对文件存储在计算机中位置的标识,除Window使用反斜杠"\"以外,其他操作系统使用斜杠"/"分隔。
-- 当前路径:正在执行的Python文件所在目录。
-- 绝对路径:从操作系统根目录开始,Window以盘符"C:"、"D:",OS X或Linux以斜杠"/"开始。
-- 相对路径:从当前目录开始。
对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() # 删除目录(目录必须为空)
对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) 字节串
以字节类型表达数据,处理二进程数据更方便。
略(与文本文件相同)