电脑上安装了PC版本的微信,最近发现C盘不够用了。一查发现微信的聊天记录能占到20G,当然微信自带了清理聊天记录。在家隔离期间,闲来无事用Python写了一个小方法来统计微信路径下Data文件夹下每年产生的数据量,并清理了指定年的数据。
涉及Python内置模块
- os
- datetime
涉及函数
- os模块中的listdir函数,返回指定文件夹下的文件及文件夹列表
- os.path.join函数,用于拼接文件路径
- os.path.isfile函数,判断参数是否为文件(注意:参数必须为完整的绝对路径)
- os.path.getctime函数,返回文件path的创建时间
- datetime.fromtimestamp函数,把参数时间戳转换成格式化日期时间并返回
- os.path.getsize函数,获取文件大小(字节)
- 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)
清理之前:
清理之后:
电脑清理完后,可以放心睡觉了。应该是在家隔离闲的!