python os.walk() 方法
时间: 2023-04-29 12:06:30 AIGC 浏览: 206
os.walk()是Python中的一个文件遍历函数,用于遍历指定目录及其子目录下的所有文件和文件夹。它返回一个三元素元祖,依次为当前遍历到的目录名称、该目录下的所有子目录名称列表、该目录下的所有文件名称列表。通过os.walk()函数,我们可以方便地遍历整个目录结构,进行文件操作。
相关问题
python os.walk方法使用详解
`os.walk()` 是 Python 中 `os` 模块的一个非常有用的函数,用于递归地遍历目录树。以下是该函数的详细使用说明:
### 函数签名
```python
os.walk(top, topdown=True, onerror=None, followlinks=False)
```
### 参数解释
- `top`:要遍历的目录的根路径,可以是绝对路径或相对路径。
- `topdown`:一个布尔值,默认为 `True`。如果为 `True`,则先遍历根目录,再递归遍历子目录(即自上而下遍历);如果为 `False`,则先递归遍历子目录,最后遍历根目录(即自下而上遍历)。当 `topdown` 为 `True` 时,可以在遍历过程中修改 `dirs` 列表来控制后续要遍历的子目录;而当 `topdown` 为 `False` 时,修改 `dirs` 列表没有效果,因为子目录已经遍历过了。
- `onerror`:一个可选的错误处理函数,该函数接受一个 `OSError` 实例作为参数。如果在遍历过程中发生错误,会调用这个函数。如果没有提供该参数,则忽略错误。
- `followlinks`:一个布尔值,默认为 `False`。如果为 `True`,则会跟随符号链接并遍历链接指向的目录;如果为 `False`,则不会遍历符号链接指向的目录。
### 返回值
`os.walk()` 是一个生成器函数,它会生成一个 3 元组 `(dirpath, dirnames, filenames)`,具体解释如下:
- `dirpath`:一个字符串,表示当前正在遍历的目录的路径。
- `dirnames`:一个列表,包含当前目录下的所有子目录的名称(不包括 `.` 和 `..`)。
- `filenames`:一个列表,包含当前目录下的所有非目录文件的名称。
### 示例代码
```python
import os
from os.path import join, getsize
# 遍历指定目录
for root, dirs, files in os.walk('python/Lib/email'):
print(root, "consumes", end="")
# 计算当前目录下所有文件的总大小
total_size = sum(getsize(join(root, name)) for name in files)
print(total_size, end="")
print("bytes in", len(files), "non-directory files")
# 如果当前目录下有 'CVS' 子目录,则从 dirs 列表中移除,避免后续遍历
if 'CVS' in dirs:
dirs.remove('CVS')
```
### 代码解释
上述代码中,首先使用 `os.walk('python/Lib/email')` 遍历指定目录及其子目录。对于每个目录,打印出该目录的路径、该目录下所有文件的总大小以及文件的数量。同时,如果当前目录下存在 `CVS` 子目录,则将其从 `dirs` 列表中移除,这样后续就不会再遍历 `CVS` 目录了。
### 注意事项
- 如果传递的 `top` 是相对路径,在遍历过程中不要改变当前工作目录,因为 `os.walk()` 不会改变当前工作目录,并且假设调用者也不会改变。
- 当 `followlinks` 为 `True` 时,要注意可能会出现循环引用的情况,导致无限递归。
python os.walk os.path.join
Python的os模块中的os.walk()函数是用来遍历文件夹的。它可以递归地遍历指定文件夹下的所有子文件夹和文件,并返回一个包含每个文件夹路径、子文件夹列表和文件列表的三元组的生成器。
而os.path.join()函数是用来连接路径的。它可以将多个路径组合成一个新的路径,并根据操作系统的不同自动添加正确的路径分隔符。这样可以方便地创建文件的绝对路径。
举个例子,如果我们有一个文件夹路径 `c:\Python`,并且文件夹中有一个名为 `a.txt` 的文件,我们可以使用os.path.join()函数将文件夹路径和文件名连接起来,生成完整的文件路径 `'c:\\Python\\a.txt'`。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Python os.walk() 方法遍历文件目录](https://blog.csdn.net/weixin_34567079/article/details/114911951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [如何用Python os.path.walk方法遍历搜索文件内容的操作详解_](https://blog.csdn.net/weixin_42216454/article/details/113963002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文
相关推荐


















