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

【Python】使用Python实现文件与目录操作:os和shutil模块详解!

【Python】使用Python实现文件与目录操作:os和shutil模块详解!

在Python编程中,文件和目录的操作是必不可少的任务。无论是数据分析、自动化脚本开发还是应用程序开发中,文件和目录的创建、删除、复制、移动等操作都非常常见。Python标准库中提供了强大的osshutil模块,帮助我们高效地管理文件和目录。本篇博客将详细介绍这两个模块的功能及其用法,辅以代码示例,帮助你更轻松地实现文件与目录的各种操作。


目录

  1. os模块和shutil模块简介
  2. 获取当前工作目录
  3. 更改工作目录
  4. 创建新目录
  5. 删除目录
  6. 列出目录内容
  7. 文件与目录的判断
  8. 创建新文件
  9. 删除文件
  10. 复制文件
  11. 复制目录
  12. 移动文件和目录
  13. 重命名文件和目录
  14. 获取文件或目录的大小
  15. 遍历目录结构:os.walk()
  16. 更改文件权限
  17. 总结

1. os模块和shutil模块简介

Python的os模块提供了与操作系统交互的多种功能,支持跨平台操作文件和目录。而shutil模块是os模块的一个补充,提供了一些高级的文件和目录操作,如复制、移动和删除等。

2. 获取当前工作目录

我们可以通过os.getcwd()获取当前工作目录,这对于脚本的相对路径操作尤为重要。

import oscurrent_dir = os.getcwd()
print("当前工作目录:", current_dir)

3. 更改工作目录

通过os.chdir()可以更改当前的工作目录,这对于批量操作特定目录下的文件很有帮助。

os.chdir('/path/to/directory')
print("更改后的工作目录:", os.getcwd())

4. 创建新目录

os.mkdir()os.makedirs()分别用于创建单级和多级目录。mkdir只创建单级目录,而makedirs可以递归创建多层目录。

# 创建单级目录
os.mkdir("test_folder")# 创建多级目录
os.makedirs("parent_folder/child_folder")

5. 删除目录

os.rmdir()删除空目录,shutil.rmtree()可以递归删除非空目录。要小心使用rmtree,它会删除目录及其所有内容。

import shutil# 删除空目录
os.rmdir("test_folder")# 删除非空目录
shutil.rmtree("parent_folder")

6. 列出目录内容

通过os.listdir()可以列出指定目录的内容(包括文件和子目录)。

contents = os.listdir(".")
print("当前目录内容:", contents)

7. 文件与目录的判断

os.path模块提供了一些函数判断路径是否存在,以及判断路径是文件还是目录。

# 判断路径是否存在
exists = os.path.exists("some_folder")# 判断是否为文件
is_file = os.path.isfile("some_file.txt")# 判断是否为目录
is_dir = os.path.isdir("some_folder")print("路径存在:", exists, "是否为文件:", is_file, "是否为目录:", is_dir)

8. 创建新文件

在Python中可以使用open()函数来创建新文件,通过指定写模式'w''a'实现。

with open("new_file.txt", "w") as file:file.write("Hello, World!")
print("文件创建并写入成功")

9. 删除文件

os.remove()可以删除指定的文件,适合清理不再需要的临时文件。

os.remove("new_file.txt")
print("文件已删除")

10. 复制文件

shutil.copy()可以复制文件,shutil.copy2()在复制文件的同时保留元数据(例如文件的创建时间和修改时间)。

# 复制文件,不保留元数据
shutil.copy("source_file.txt", "destination_folder")# 复制文件,保留元数据
shutil.copy2("source_file.txt", "destination_folder")

11. 复制目录

使用shutil.copytree()可以递归复制整个目录及其内容。

shutil.copytree("source_folder", "destination_folder")
print("目录已复制")

12. 移动文件和目录

shutil.move()可以移动文件或目录,同时支持重命名操作。

# 移动文件
shutil.move("source_file.txt", "destination_folder")# 移动并重命名文件
shutil.move("old_name.txt", "new_name.txt")

13. 重命名文件和目录

使用os.rename()可以重命名文件和目录,支持指定旧名称和新名称。

os.rename("old_name.txt", "new_name.txt")
print("文件已重命名")

14. 获取文件或目录的大小

os.path.getsize()可以获取文件或目录的大小(字节为单位)。

file_size = os.path.getsize("example.txt")
print("文件大小:", file_size, "字节")

15. 遍历目录结构:os.walk()

os.walk()可以递归遍历目录,返回每一级目录的路径、子目录列表和文件列表。适用于文件搜索或批量处理文件。

for root, dirs, files in os.walk("."):print("当前路径:", root)print("子目录:", dirs)print("文件:", files)

16. 更改文件权限

os.chmod()用于更改文件权限,例如设置文件为可读、可写或可执行。权限使用八进制数指定(例如,0o755表示所有者可读、可写、可执行,其他人可读和可执行)。

# 设置文件权限为可读写执行
os.chmod("example.txt", 0o755)
print("文件权限已修改")

17. 总结

本文详细介绍了Python中osshutil模块的基本用法,包括文件与目录的创建、删除、复制、移动、重命名、权限修改等操作。这两个模块提供了丰富的方法和灵活的操作,能够满足开发者在不同场景下的需求。通过熟练掌握这些模块,Python开发者可以高效、便捷地完成文件与目录的操作,提升代码质量和执行效率。


http://www.mrgr.cn/news/58854.html

相关文章:

  • 用更多的钱买电脑而不是手机
  • IDEA开发工具使用技巧积累
  • 数据结构——树、二叉树和森林间的转换
  • 代码编辑组件
  • C++ [项目] 愤怒的小鸟
  • el-table 设置单击行时选中当前行的复选框并取消其他复选框的选择
  • c++动态规划之动态转移方程
  • 【Django】创建项目、启动及app过程及遇到的问题和解决方案
  • 通过RAG增强大模型回答原本无法回答的问题
  • 【linux】麒麟v10安装ELKB 8.8.X版本(ARM架构)
  • 谷歌浏览器又出新功能,浏览器扩展大调整
  • C++:AVL树的实现
  • STM32使用硬件I2C读写AT24C02 EEPROM(二)
  • useEffect简单介绍
  • USB上传文件到LINUX系统
  • EveryoneNobel:为每个人打造诺贝尔奖风格的纪念图片
  • UART通过DMA接收和发送,使用环形缓冲区,状态机的使用
  • 使用 Kibana 将地理空间数据导入 Elasticsearch 以供 ES|QL 使用
  • 线性表之顺序表
  • 最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等
  • apt-cache工具
  • 为什么需要weak_ptr
  • Debezium日常分享系列之:使用Debezium检测数据变异模式
  • 【C/C++ Qt shared_ptr | make_shared | QSharedPointer 】绕圈圈
  • vue3学习(一)项目搭建
  • Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具