“动动小手,点点关注呗~”
“你知道的——当一个人情绪低落的时候,他会格外喜欢看日落。”——安东尼·德·圣埃克苏佩里《小王子》
在Python编程中,对目录的操作是一项基础且重要的技能。无论是进行文件管理、数据处理还是项目部署,都经常会涉及到目录的创建、删除、遍历等操作。Python的os模块提供了一系列强大的函数来完成这些任务,本文将带你深入探索os模块对目录的各种操作。
一、os模块简介
os模块是Python标准库中与操作系统交互的重要模块,它提供了许多函数用于处理文件和目录,而且这些函数能够在不同操作系统(如Windows、Linux、macOS)上使用,具有良好的跨平台性 。在使用os模块的函数前,需要先导入它:
二、获取当前工作目录
获取当前Python脚本所在的工作目录是一个常见的操作,使用os.getcwd()函数可以轻松实现:
运行结果:
假设脚本在C:\Users\YourUsername\Documents\PythonScripts路径下运行,结果将会是:
代码含义:os.getcwd()函数返回一个字符串,表示当前的工作目录。将其赋值给current_dir变量后,使用print函数输出结果。
三、更改当前工作目录
使用os.chdir(path)函数可以更改当前的工作目录,path参数为要切换到的目标目录路径。例如,切换到系统的根目录(在Windows下是盘符根目录,在Linux和macOS下是/):
运行结果(Windows环境):
代码含义:os.chdir('C:\\')将工作目录切换到C盘根目录,双反斜杠是因为在Python字符串中,反斜杠是转义字符,需要用两个反斜杠表示一个普通的反斜杠。然后再次获取当前工作目录并输出。
四、创建目录
(一)创建单个目录
使用os.mkdir(path)函数可以创建一个新目录,path为要创建的目录路径。例如,在当前工作目录下创建一个名为new_folder的新目录:
运行结果:
代码含义:os.path.join(os.getcwd(), 'new_folder')使用os.path.join函数将当前工作目录和新目录名new_folder拼接成完整的路径,这样可以确保路径在不同操作系统下都能正确表示。os.mkdir根据拼接后的路径创建新目录,最后输出创建成功的提示信息。
(二)创建多级目录
如果要创建的目录包含多级子目录,可以使用os.makedirs(path)函数,它会递归创建所有必要的中间目录。例如,创建parent_folder/child_folder/grandchild_folder这样的三级目录结构:
运行结果:
代码含义:同样使用os.path.join拼接出完整的多级目录路径,os.makedirs函数会根据这个路径创建出整个目录结构,包括中间的parent_folder和child_folder目录。
五、删除目录
(一)删除空目录
使用os.rmdir(path)函数可以删除一个空目录,path为要删除的目录路径。例如,删除前面创建的new_folder目录:
运行结果:
代码含义:先拼接出要删除的目录路径,然后使用os.rmdir函数删除该目录,注意这个函数只能删除空目录,如果目录非空会抛出OSError异常。
(二)删除非空目录
删除非空目录需要使用shutil模块中的rmtree函数,shutil是Python标准库中用于高级文件操作的模块。例如,删除前面创建的包含多级子目录的parent_folder:
运行结果:
代码含义:shutil.rmtree函数会递归删除指定目录及其包含的所有文件和子目录,直接将整个目录结构从文件系统中移除 。
六、遍历目录
(一)简单遍历当前目录下的文件和子目录
使用os.listdir(path)函数可以列出指定目录下的所有文件和子目录,返回一个包含它们名字的列表。如果不传入path参数,则默认列出当前工作目录下的内容。例如:
运行结果(假设当前目录下有file1.txt、file2.py和sub_folder子目录):
代码含义:os.listdir(current_dir)获取当前工作目录下的所有文件和子目录名称列表,然后通过for循环逐个打印出来。
(二)深度遍历目录树
使用os.walk(top)函数可以实现深度优先遍历目录树,top为要遍历的目录路径。os.walk会返回一个三元组(dirpath, dirnames, filenames),其中dirpath是当前遍历到的目录路径,dirnames是该目录下的子目录名称列表,filenames是该目录下的文件名称列表。例如,遍历整个C:\Users\YourUsername目录(注意,实际运行时这个目录下文件众多,这里只是示例):
代码含义:通过for循环迭代os.walk(root_dir)返回的结果,每次迭代中,先打印当前目录路径dirpath,然后分别遍历并打印子目录名称dirnames和文件名称filenames,最后打印30个短横线作为分隔,方便区分不同目录层级的输出。
七、总结
通过os模块,我们可以方便地在Python中进行各种目录操作。从获取和更改工作目录,到创建、删除目录,再到遍历目录树,这些操作在日常编程中非常实用。掌握这些技巧,能够让你更高效地处理文件系统相关的任务,无论是小型脚本还是大型项目开发都能得心应手。希望本文介绍的内容对你的Python编程学习和实践有所帮助,快去动手尝试这些os模块的目录操作函数吧!
“动动小手,点点关注呗~”🫰
领取专属 10元无门槛券
私享最新 技术干货