下面是详细的攻略过程:
1. os.walk模块是什么?
os.walk
是Python中的一个模块,它可以帮助我们遍历文件夹中的所有文件和文件夹。os.walk
遍历时会穿过所有子目录,直到最底层目录,返回树形结构的文件和目录。
2. os.walk的语法
在使用os.walk
之前,我们需要了解其语法:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数说明:
top
:需要遍历的路径topdown
:可选参数,默认值为True,表示首先遍历top目录,然后在目录下遍历子目录和文件;如果值为False,则表示先遍历子目录和文件,然后再遍历top目录。onerror
:可选参数,用于处理遍历过程中出现的错误。默认情况下,出现错误时os.walk
将直接抛出异常,我们可以通过该参数指定自定义的错误处理函数。followlinks
:可选参数,默认为False,表示是否跟随符号链接。如果设为True,则跟随符号链接。
返回值:os.walk
返回一个三元组(root, dirs, files)
,其中每个元素分别代表:
root
:当前遍历的目录路径dirs
:当前目录下的所有子目录(不包括文件)files
:当前目录下的所有文件(不包括目录)
3. os.walk的应用示例
下面介绍两个不同的应用场景来示范如何使用os.walk
检索文件夹中的所有文件和子文件夹,并对它们执行操作。
示例 1:列出指定路径下所有文件和文件夹
下面的代码遍历当前工作目录,列出该目录下的所有文件和子文件夹:
import os
path = os.getcwd() # 获取当前工作目录
for root, dirs, files in os.walk(path):
for name in files:
print(os.path.join(root, name)) # 输出文件路径
for name in dirs:
print(os.path.join(root, name)) # 输出子目录路径
以上代码输出的结果是当前工作目录下所有文件和子目录的路径,包括隐藏文件和子目录。当然你也可以在代码中通过一些筛选条件进行过滤。
示例 2:递归删除一个文件夹及其子目录
下面的例子展示了如何使用os.walk
递归删除指定文件夹及其子目录,可以通过正确的文件夹路径代替path_to_folder
。
import os
import shutil
path_to_folder = '/path/to/folder' # 对应要删除的目标文件夹
for root, dirs, files in os.walk(path_to_folder, topdown=False):
for name in files:
os.remove(os.path.join(root, name)) # 删除文件
for name in dirs:
os.rmdir(os.path.join(root, name)) # 删除空目录
shutil.rmtree(path_to_folder) # 删除非空目录
以上代码中,shutil.rmtree
用于删除该目录及其子目录的所有内容。
结论
通过本文中的示例代码,我们可以看到os.walk
的强大功能:能够遍历文件夹中的所有文件和子文件夹。这种遍历为我们提供了极大的便利,让我们可以轻松地执行目录操作,例如查找、删除、移动和复制等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用os模块的os.walk遍历文件夹示例 - Python技术站