使用Python3遍历文件夹的关键点有两个:
1、使用os.scandir扫描当前文件夹下的内容,区别文件夹和文件
2、使用list存储带扫描的文件夹,按照头出尾入的顺序依次扫描每个文件夹。
python
import os
import sys
def print_list(strings) -> None:
for item in strings:
print(item)
def list_files(path) -> []:
dirs = [path]
files = []
while len(dirs) > 0:
dirpath = dirs.pop(0)
for item in os.scandir(dirpath):
if item.is_dir():
dirs.append(item.path)
elif item.is_file():
files.append(item.path)
return files
def main(argv) -> int:
if len(argv) != 1:
return 0
files = list_files(argv[0])
print_list(files)
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
待扫描的目录如下:
bash
~$ tree test
test
├── a
│ └── abc.txt
├── b
│ ├── bcd.txt
│ └── c
│ └── cde.txt
├── d
│ ├── def.txt
│ └── e
│ ├── efg.txt
│ └── f
│ └── fgh.txt
├── g
│ └── ghi.txt
└── test.txt
7 directories, 8 files
使用Python脚本扫描的结果如下:
bash
~$ python3 test.py test
test/test.txt
test/g/ghi.txt
test/b/bcd.txt
test/d/def.txt
test/a/abc.txt
test/b/c/cde.txt
test/d/e/efg.txt
test/d/e/f/fgh.txt