【Python】使用Python实现文件与目录操作:os和shutil模块详解!
【Python】使用Python实现文件与目录操作:os和shutil模块详解!
在Python编程中,文件和目录的操作是必不可少的任务。无论是数据分析、自动化脚本开发还是应用程序开发中,文件和目录的创建、删除、复制、移动等操作都非常常见。Python标准库中提供了强大的os
和shutil
模块,帮助我们高效地管理文件和目录。本篇博客将详细介绍这两个模块的功能及其用法,辅以代码示例,帮助你更轻松地实现文件与目录的各种操作。
目录
os
模块和shutil
模块简介- 获取当前工作目录
- 更改工作目录
- 创建新目录
- 删除目录
- 列出目录内容
- 文件与目录的判断
- 创建新文件
- 删除文件
- 复制文件
- 复制目录
- 移动文件和目录
- 重命名文件和目录
- 获取文件或目录的大小
- 遍历目录结构:
os.walk()
- 更改文件权限
- 总结
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中os
和shutil
模块的基本用法,包括文件与目录的创建、删除、复制、移动、重命名、权限修改等操作。这两个模块提供了丰富的方法和灵活的操作,能够满足开发者在不同场景下的需求。通过熟练掌握这些模块,Python开发者可以高效、便捷地完成文件与目录的操作,提升代码质量和执行效率。