Python清理PC端微信产生的超大数据

2023年2月9日11:29:24

 

电脑上安装了PC版本的微信,最近发现C盘不够用了。一查发现微信的聊天记录能占到20G,当然微信自带了清理聊天记录。在家隔离期间,闲来无事用Python写了一个小方法来统计微信路径下Data文件夹下每年产生的数据量,并清理了指定年的数据。

涉及Python内置模块

  • os
  • datetime

涉及函数

  1. os模块中的listdir函数,返回指定文件夹下的文件及文件夹列表
  2. os.path.join函数,用于拼接文件路径
  3. os.path.isfile函数,判断参数是否为文件(注意:参数必须为完整的绝对路径)
  4. os.path.getctime函数,返回文件path的创建时间
  5. datetime.fromtimestamp函数,把参数时间戳转换成格式化日期时间并返回
  6. os.path.getsize函数,获取文件大小(字节)
  7. os.remove函数,用于删除指定的路径文件

代码示例

import os
from datetime import datetime


# 字节转化KB\M\G
def format_size(bt):
    try:
        bts = float(bt)
        kb = bts / 1024
    except Exception as e:
        print(e)
        return "Error"

    if kb >= 1024:
        M = kb / 1024
        if M >= 1024:
            G = M / 1024
            return "%fG" % (G)
        else:
            return "%fM" % (M)
    else:
        return "%fkb" % (kb)



def get_data_size(path):
    '''
    :param path: 绝对路径
    :return: 返回字典结构 年份为key value为该年所有文件的大小
    '''
    # 空字典用来存储按年计算的文件大小
    year_files_size = {}
    # 遍历该路径下所有的文件及文件夹
    for item_file in os.listdir(path):
        # 使用join方法拼接完整的绝对路径
        full_path = os.path.join(path, item_file)
        # 判断是否为文件
        if os.path.isfile(full_path):
            # 获取文件创建时间并格式化
            t = datetime.fromtimestamp(os.path.getctime(full_path))
            # 获取格式化后日期时间中的年份,判断是否在空字典中存在。如不存在设置年份为key,文件大小为value
            # 否则进行value累加
            if t.year not in year_files_size:
                year_files_size[t.year] = os.path.getsize(full_path)
            else:
                year_files_size[t.year] += os.path.getsize(full_path)

    # 格式化字节重新赋值
    for k, v in year_files_size.items():
        year_files_size[k] = format_size(v)

    return year_files_size


def del_year_data(path, years):
   '''
    
    :param path: 绝对路径
    :param years: 返回删除总条数
    :return: 
    '''
    total_num = 0
    for item in os.listdir(path):
        full_path = os.path.join(path, item)
        if os.path.isfile(full_path):
            t = datetime.fromtimestamp(os.path.getctime(full_path))
            if t.year in years:
                os.remove(full_path)
                print("清理数据{}成功!".format(full_path))
                total_num += 1
    print("共清理数据{}条".format(total_num))
    return total_num


if __name__ == '__main__':
    path = r"C:\Users\Documents\WeChat Files\xxxx\Data"
    data = get_data_size(path)
    print(data)
    del_years = [2018]
    del_year_data(path, del_years)

清理之前:

清理之后: 

 


电脑清理完后,可以放心睡觉了。应该是在家隔离闲的!

  • 作者:北京-栗子
  • 原文链接:https://blog.csdn.net/wangdongxuan0209/article/details/105548828
    更新时间:2023年2月9日11:29:24 ,共 1765 字。