1. ホーム
  2. Python

Pythonでフォルダをトラバースして大きなファイルを探す

2022-02-15 05:43:19
<ブロッククオート

注意:これは学習目的のみです、違法な目的で使用しないでください、もし侵害があれば、ブログのオーナーに連絡して削除してください

著者:朱6201976

ブログ https://blog.csdn.net/zhu6201976

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('folder', file_name_path)
            get_all(file_name_path, min_size, max_size)
        else:
            # print('file', file_name_path)
            size = get_size(file_name_path)
            if min_size <= int(size) <= max_size:
                print('Large file found', 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__':
    # Find all files in the D:\\ directory that are between 100M and 1G in size
    get_all(path='D:\\', min_size=100 * 1024 * 1024, max_size=1024 * 1024 * 1024)