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