当前位置: 首页 > web >正文

Python文件与目录操作管理详解

文章目录

  • Python文件与目录操作管理详解
    • 一、文件操作基础
      • 1. 文件操作的基本流程
      • 2. 文件打开模式
      • 3. 基本文件操作代码示例
    • 二、目录操作
      • 1. 常用目录操作函数
      • 2. 目录操作代码示例
    • 三、路径操作
      • 1. 路径操作对比
      • 2. 路径操作代码示例
    • 四、高级文件操作
      • 1. 文件复制、移动和删除
      • 2. 文件信息获取
    • 五、临时文件和目录
    • 六、文件遍历与查找
      • 1. 遍历目录
      • 2. 文件查找
    • 七、文件编码处理
    • 八、最佳实践总结

Python文件与目录操作管理详解

文件与目录操作是编程中非常基础但重要的功能,Python提供了多种方式来处理文件和目录。下面我将用通俗易懂的方式,结合代码示例和图表,为你全面讲解Python中的文件与目录操作。

一、文件操作基础

1. 文件操作的基本流程

文件操作通常遵循"打开→操作→关闭"的流程:

[打开文件] → [读取/写入] → [关闭文件]

2. 文件打开模式

Python中使用open()函数打开文件,可以指定不同的模式:

模式描述文件存在文件不存在
‘r’只读正常打开报错
‘w’写入清空内容创建新文件
‘a’追加保留内容创建新文件
‘x’创建报错创建新文件
‘b’二进制模式与其他模式组合使用
‘t’文本模式(默认)与其他模式组合使用
‘+’读写模式与其他模式组合使用

3. 基本文件操作代码示例

# 写入文件
with open('example.txt', 'w') as f:f.write("Hello, World!\n")f.write("这是第二行内容")# 读取文件
with open('example.txt', 'r') as f:content = f.read()  # 读取全部内容print(content)# 按行读取
with open('example.txt', 'r') as f:for line in f:  # 逐行读取print(line.strip())  # strip()去掉行尾换行符

二、目录操作

Python中目录操作主要通过ospathlib模块实现。

1. 常用目录操作函数

操作os模块pathlib.Path
创建目录os.mkdir()Path.mkdir()
递归创建os.makedirs()Path.mkdir(parents=True)
删除目录os.rmdir()Path.rmdir()
递归删除shutil.rmtree()无直接方法
列出目录os.listdir()Path.iterdir()
路径拼接os.path.join()/运算符或Path.joinpath()
判断存在os.path.exists()Path.exists()

2. 目录操作代码示例

import os
from pathlib import Path# 使用os模块
os.mkdir('test_dir')  # 创建目录
print(os.listdir('.'))  # 列出当前目录内容
os.rmdir('test_dir')  # 删除目录# 使用pathlib模块(更现代的方式)
path = Path('test_dir')
path.mkdir(exist_ok=True)  # 创建目录,exist_ok=True避免已存在时报错
print([p.name for p in path.parent.iterdir()])  # 列出父目录内容
path.rmdir()  # 删除目录

三、路径操作

处理文件路径是文件操作中的常见需求。

1. 路径操作对比

需求os.pathpathlib.Path
获取文件名os.path.basename(path)Path(path).name
获取目录os.path.dirname(path)Path(path).parent
拼接路径os.path.join(a, b)Path(a)/b
获取绝对路径os.path.abspath(path)Path(path).absolute()
判断文件os.path.isfile(path)Path(path).is_file()
判断目录os.path.isdir(path)Path(path).is_dir()

2. 路径操作代码示例

from pathlib import Path# 创建Path对象
p = Path('/home/user/documents/report.txt')# 获取各部分
print(p.name)    # 'report.txt'
print(p.stem)    # 'report' (不带后缀的文件名)
print(p.suffix)  # '.txt' (文件扩展名)
print(p.parent)  # '/home/user/documents'# 路径拼接
new_p = p.parent / 'backup' / p.name
print(new_p)  # '/home/user/documents/backup/report.txt'# 判断路径类型
print(p.is_file())  # 是否是文件
print(p.is_dir())   # 是否是目录

四、高级文件操作

1. 文件复制、移动和删除

import shutil
from pathlib import Path# 复制文件
shutil.copy('source.txt', 'destination.txt')# 复制目录(递归)
shutil.copytree('source_dir', 'destination_dir')# 移动/重命名文件或目录
shutil.move('old_name.txt', 'new_name.txt')# 删除文件
Path('file_to_delete.txt').unlink()  # 或者 os.remove()# 递归删除目录
shutil.rmtree('directory_to_delete')

2. 文件信息获取

from pathlib import Path
import timep = Path('example.txt')# 获取文件大小(字节)
size = p.stat().st_size
print(f"文件大小: {size} 字节")# 获取修改时间
mtime = p.stat().st_mtime
print(f"修改时间: {time.ctime(mtime)}")# 获取创建时间(Windows)
ctime = p.stat().st_ctime
print(f"创建时间: {time.ctime(ctime)}")

五、临时文件和目录

Python可以方便地创建临时文件和目录:

import tempfile# 创建临时文件
with tempfile.NamedTemporaryFile(delete=False) as tmp:print(f"临时文件路径: {tmp.name}")tmp.write(b"临时内容")# 创建临时目录
with tempfile.TemporaryDirectory() as tmpdir:print(f"临时目录路径: {tmpdir}")# 在这里使用临时目录
# 退出with块后临时目录自动删除

六、文件遍历与查找

1. 遍历目录

from pathlib import Path# 递归遍历目录
for item in Path('.').rglob('*'):print(item)# 非递归遍历
for item in Path('.').iterdir():if item.is_file():print(f"文件: {item}")elif item.is_dir():print(f"目录: {item}")

2. 文件查找

from pathlib import Path# 查找所有.py文件
py_files = list(Path('.').glob('*.py'))
print(py_files)# 递归查找所有.txt文件
txt_files = list(Path('.').rglob('*.txt'))
print(txt_files)

七、文件编码处理

处理不同编码的文件:

# 读取GBK编码文件
with open('gbk_file.txt', 'r', encoding='gbk') as f:content = f.read()# 写入UTF-8文件
with open('utf8_file.txt', 'w', encoding='utf-8') as f:f.write("这是UTF-8编码的内容")

八、最佳实践总结

  1. 优先使用pathlib:比os.path更现代、更面向对象
  2. 使用with语句:确保文件正确关闭
  3. 处理异常:文件操作可能失败(权限、不存在等)
  4. 注意路径跨平台:Windows用\,Linux/macOS用/,pathlib会自动处理
  5. 大文件处理:避免一次性读取大文件,使用逐行或分块读取
# 良好实践示例
from pathlib import Pathfile_path = Path('data') / 'large_file.txt'
try:with open(file_path, 'r', encoding='utf-8') as f:for line in f:process_line(line)  # 逐行处理大文件
except FileNotFoundError:print(f"文件 {file_path} 不存在")
except PermissionError:print(f"没有权限访问 {file_path}")

通过以上内容,你应该对Python中的文件和目录操作有了全面的了解。记住实践是最好的学习方式,多写代码来巩固这些知识!

http://www.xdnf.cn/news/14547.html

相关文章:

  • 装饰模式Decorator Pattern
  • 阿里开源的MaskSearch:教AI学会“自己找答案”的魔法书
  • GO语言---panic和recover关键字
  • SpringAI+DeepSeek大模型应用开发——6基于MongDB持久化对话
  • 内存一致性模型
  • 人工智能学习31-开发框架
  • 【技术实战】工业级设备健康管理系统搭建全栈指南:从数据采集到预测性维护
  • C++与C如何相互调用
  • 盟接之桥EDI软件:开启制造业数据对接与协同的新纪元
  • Requests源码分析01:运行tests
  • 结构学习的理论(第1、2章)
  • OpenKylin安装运行ssh及sftp服务
  • 缓冲区技术
  • SCAU大数据技术原理雨课堂测验2
  • NodeJS11和10以及之前的版本,关键差异?
  • 大模型<闲谈>
  • 6.14打卡
  • 解决虚拟环境中文绘图显示问题
  • 【DVWA系列】——SQL注入——low详细教程
  • CFD仿真硬件选型建议
  • Python高效操作MySQL数据库
  • 2025最新Nvm安装教程
  • ceil方法
  • linux多线程之可重入函数
  • 618背后的电商逻辑重构:从价格血战到价值共生
  • nlp和大模型
  • 深入剖析AI大模型:GPU在大模型训练与推理的性能抉择
  • gpfs的安装配置与部署
  • C语言:Linux libc和glibc的历史
  • Java的String