定时删除微信文件夹中重复文件

问题描述

PC端微信在翻看聊天记录时,对于文件会反复接收,然后你就会发现文件夹会有一大堆文件是重复的。重复的文件名用括号+数字进行了修改。虽然大家都在吐槽这个问题,可是微信死活还是没有对这个bug进行解决。那么, 如何解决这个问题呢?

#!/usr/bin/env python
#coding: utf-8

import md5
import os
from time import clock as now

def getmd5(filename):
    file_txt = open(filename, 'rb').read()
    m = md5.new(file_txt)
    return m.hexdigest()

def main():
    path = u'C:\aabbccdd'
    all_md5 = {}
    all_size = {}
    total_file = 0
    total_delete = 0
    start = now()
    for file in os.listdir(path):
        total_file += 1
        real_path = os.path.join(path, file)
        if os.path.isfile(real_path) == True:
            size = os.stat(real_path).st_size
            name_and_md5 = [real_path, '']
            if size in all_size.keys():
                new_md5 = getmd5(real_path)
                if all_size[size][1] == '':
                    all_size[size][1] = getmd5(all_size[size][0])
                if new_md5 in all_size[size]:
                    total_delete += 1
                    print u'删除', file
                    try:
                        os.remove(os.path.join(path, file))
                    except:
                        print 'No such file: %s' % file
                else:
                    all_size[size].append(new_md5)
            else:
                all_size[size] = name_and_md5
    end = now()
    time_last = end - start
    print u'文件总数: ', total_file
    print u'删除个数: ', total_delete
    print u'耗时: ', time_last, '秒'

if __name__ == '__main__':
    main()

分析

  • 文件夹禁止写入。导致文件无法接收,不可取。
  • 阻止重复接收。在微信接收文件前,先对本地文件进行检查,若重复,则不接收。可想象总是美好的,臣妾做不到啊。
  • 删除文件夹中重复文件。这属于是灾难发生后的挽救措施,也是没有办法的办法了。首先利用脚本通过一定的正则表达式规则可以找出重复的文件,其次就是创建一个定时任务,定时执行一遍写好的脚本即可将重复文件清理掉。

本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10

参考:

Python脚本

创建 del_repeat_file.py 文件,其中代码如下:

# -*- coding: utf-8 -*-
# Author:gaozhengjie
# Blog:https://www.jianshu.com/u/02877dbc2662
# E-mail:3170601003@cuit.edu.cn
# Python Version:3.6.1
# Time:2018/1/12
# Description:删除微信文件夹中重复文件

import os
import re

filename_regex = re.compile(r'.*(d+)..*')
# 将下面的路径替换为你自己的微信文件夹路径
wechat_file_path = "C:\Users\gzj\Documents\WeChat Files\gzjie678\Files"
file_list = os.listdir(wechat_file_path)
print('n' + '*' * 50 + 'n')
for i in file_list:
    temp = filename_regex.search(i)
    if temp != None:
        del_path = wechat_file_path + '\' + temp.group()
        print(del_path)
        os.remove(del_path)  # 永久删除指定路径的文件
print('n' + '*' * 50)

原文没有执行删除文件的操作:

本文由大发快三开奖结果发布于电脑,转载请注明出处:定时删除微信文件夹中重复文件

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。