os.listdir和os.walk都是获取指定目录下的文件内容
两者有一定的区别,现在举例说明:
如下图所示目录结构:
os.walk
import os
def file_name(file_site):
for root, dirs, files in os.walk(file_dir):
print("root", root) # 当前目录路径
print("dirs", dirs) # 当前路径下所有子文件夹
print("files", files) # 当前路径下所有非子文件夹的文件
file_name_walk(‘E:/文件’)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
输出:
root : E:/文件 # 当前目录
dirs : ['A', 'B'] # 当前目录下的子文件夹
files : ['text.txt'] # 当前目录下的非子文件夹的文件
root : E:/文件\A # 子文件夹A的目录
dirs : ['A1'] # 子文件夹A中的子文件夹A1
files : [] # 子文件夹A中没有非文件夹
root : E:/文件\A\A1 # 子文件夹A1的目录
dirs : [] # 子文件夹A1中没有子文件夹
files : [] # 子文件夹A1中没有非文件夹
root : E:/文件\B # 子文件夹B的目录
dirs : [] # 子文件夹B中的没有子文件夹
files : [] # 子文件夹B中的没有非文件夹
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
从上面可以看出:os.walk每次会把访问指定地址的:1、文件目录路径;2、文件中的子文件夹;3、文件中的非文件夹内容;然后一直类似遍历下去,不断深入文件的最底层。
os.listdir
def file_name(file_dir):
for files in os.listdir(file_dir): # 不仅仅是文件,当前目录下的文件夹也会被认为遍历到
print("files:", files)
- 1
- 2
- 3
输出:
files: A # 指定路径文件夹的子文件
files: B # 指定路径文件夹的子文件
files: text.txt # 指定路径文件夹的非文件夹内容
- 1
- 2
- 3
可以看出:os.listdir 直接访问指定文件夹内的内容,不会再嵌套的继续访问下去。