python 文件夹os.walk

测试的目录结构如下:

.
├── 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)这句可以拿到目录下所有的文件!

上一篇:os.walk() 文件查找


下一篇:7z命令