Python traverse folders to find large files

import os
import re


def get_all(path, min_size, max_size):
    file_names = os.listdir(path)
    for file_name in file_names:
        file_name_path = os.path.join(path, file_name)
        if os.path.isdir(file_name_path):
            # print('文件夹', file_name_path)
            get_all(file_name_path, min_size, max_size)
        else:
            # print('文件', file_name_path)
            size = get_size(file_name_path)
            if min_size <= int(size) <= max_size:
                print('发现大文件', file_name_path)
                with open('big_file.txt', 'a+', encoding='utf-8') as f:
                    f.write(file_name_path)
                    f.write('\n')


def get_size(path):
    try:
        file_name = path[path.rfind('\\') + 1:]
        # print(file_name)
        ret_str = os.popen('dir %s' % path).read()
        # print(ret_str)
        search = re.search(r'(\d+,?\d+,?\d+,?\d+) %s' % file_name, ret_str)
        size = search.group(1) if search else '0'
        size = size.replace(',', '')
        return size
    except:
        pass


if __name__ == '__main__':
    # 查找 D:\\目录下所有 文件大小在 100M-1G 之间的文件
    get_all(path='D:\\', min_size=100 * 1024 * 1024, max_size=1024 * 1024 * 1024)

 

Guess you like

Origin blog.csdn.net/zhu6201976/article/details/107246513