递归的使用不是很明白,为什么要在函数的第一行定义result = glob(path)呢

来源:2-11 清理重复的文件

吴老师在线叛逃

2022-01-13 20:59:14

# coding:utf-8

from glob import glob
import os

data = {}

def clear(path):
    result = glob(path)

    for _data in result:
        if os.path.isdir(_data):
            _path = os.path.join(_data, '*')
            clear(_path)
        else:
            name = os.path.split(_data)[1]
            f = open(_data, 'r')
            content = f.read()
            if name in data:
                _content_dict = data[name]
                if _content_dict == content:
                    os.remove(_data)
                    print(f'{_data}被删掉了')
            else:
                data[name] = content

if __name__ == '__main__':
    path = os.path.join(os.getcwd(), '*')
    clear(path)

https://img.mukewang.com/climg/61e01d9e096f58b004350171.jpg

写回答

1回答

好帮手慕燕燕

2022-01-14

同学,你好!glob(path)是遍历path路径下的所有文件和目录,可以将这里的path理解为最外层的路径,根路径,得到的结果result是一个列表,for循环遍历这个列表,找到子目录,递归对子目录再进行遍历,同学可结合下面的运行结果理解一下

https://img.mukewang.com/climg/61e0e0a5097659dd11660789.jpg

祝:学习愉快!

0

0 学习 · 4469 问题

查看课程