测试的目录结构如下:
.
├── 1.txt
├── 2.txt
├── a
│ ├── 3.txt
│ ├── d
│ └── e
├── b
│ ├── 4.txt
│ ├── 7.txt
│ ├── f
│ │ └── 5.txt
│ └── h
└── c
└── 5.txt
7 directories, 7 files
代码如下:
import os
root_dir = "/data_1/everyday/0723/test/"
for root, dir, files in os.walk(root_dir):
for file in files:
print(root)
print(dir)
print(file)
print("--------"*10)
print()
print()
输出如下:
/data_1/everyday/0723/test/
['b', 'a', 'c']
1.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/
['b', 'a', 'c']
2.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/b
['h', 'f']
7.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/b
['h', 'f']
4.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/b/f
[]
5.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/a
['e', 'd']
3.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/c
[]
5.txt
--------------------------------------------------------------------------------
可以用b目标来详细分析一下os.walk功能:
├── b
│ ├── 4.txt
│ ├── 7.txt
│ ├── f
│ │ └── 5.txt
│ └── h
/data_1/everyday/0723/test/b
['h', 'f']
7.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/b
['h', 'f']
4.txt
--------------------------------------------------------------------------------
/data_1/everyday/0723/test/b/f
[]
5.txt
--------------------------------------------------------------------------------
可见:
for root, dir, files in os.walk(root_dir):
root是文件夹根目录,
dir是root根目录下面的所有的文件夹,若没有文件夹就是空[]
files是root根目录下面的所有文件
列出所有的files,空文件夹不列出。
所以:
for root, dir, files in os.walk(path):
for file in files:
full_path = os.path.join(root, file)
full_path = os.path.join(root, file)这句可以拿到目录下所有的文件!