当前位置:   article > 正文

python清除typora垃圾图片_python去除typora未使用的图片

python去除typora未使用的图片

typora

typora是一款非常好用的文本编辑软件,拿来写代码或者记笔记非常不错。他的目录结构我很喜欢,比国产的软件好用多了。

但是他有个问题我不得不吐槽,没有多端同步很不好用,想在别的地方看下笔记很不方便,而且分享需要导出也很麻烦。然后还有一个问题,今天我解决了。就是删除文本,图片不一起删除的问题。

删除已经不用的图片思路

本示例使用python实现

  1. 遍历文档目录,找出所有图片,并存入列表
  2. 遍历所有文档,使用正则表达式找出所有正在使用的图片
  3. 做差,所有图片减去正在使用的图片,剩下的就是不用的图片
  4. 再次遍历,将不用的图片删除

代码

import os
import re
import shutil

import win32api

list_img1 = []  # 全部图片名称
list_img2 = []  # 使用的图片名称
list_img3 = []  # 不用的图片名称

path_file = 'D:\APPFILE\\typora'   # 图片和文本的目录
path_file_back = 'D:\APPFILE\备份'   # 图片和文本的目录
img_name = "图片" # 保存图片的目录名

pattern0 = r'图片/(\w+.*\.png)'
pattern1 = r'图片/(\w+.*\.jpg)'
pattern2 = r'图片/(\w+.*\.gif)'
pattern3 = r'图片/(\w+.*\.webp)'
pattern4 = r'图片/(\w+.*\.jpeg)'

pattern5 = r'图片\\(\w+.*\.png)'
pattern6 = r'图片\\(\w+.*\.jpg)'
pattern7 = r'图片\\(\w+.*\.gif)'
pattern8 = r'图片\\(\w+.*\.webp)'
pattern9 = r'图片\\(\w+.*\.jpeg)'

# 找出所有图片
def get_img(directory):
    global list_img1
    # 获取目录下的所有文件和子目录
    files = os.listdir(directory)
    for file in files:
        if file == img_name:
            filee = os.listdir(os.path.join(directory, file))
            for i in filee:
                list_img1.append(i)

        # 如果是子目录,则递归遍历
        if os.path.isdir(os.path.join(directory, file)):
            get_img(os.path.join(directory, file))


# 找出所有正在使用的图片
def get_file(directory):
    global list_img2
    # 获取目录下的所有文件和子目录
    files = os.listdir(directory)
    for file in files:
        # 如果是子目录,则递归遍历
        if os.path.isdir(os.path.join(directory, file)) and file != img_name:
            get_file(os.path.join(directory, file))
            # 如果是文件,则输出文件名
        elif os.path.isfile(os.path.join(directory, file)):
            fil = open(os.path.join(directory, file), 'r', encoding='utf-8')
            text = fil.read()
            results0 = re.findall(pattern0, text)
            results1 = re.findall(pattern1, text)
            results2 = re.findall(pattern2, text)
            results3 = re.findall(pattern3, text)
            results4 = re.findall(pattern4, text)
            results5 = re.findall(pattern5, text)
            results6 = re.findall(pattern6, text)
            results7 = re.findall(pattern7, text)
            results8 = re.findall(pattern8, text)
            results9 = re.findall(pattern9, text)

            for i in results0:
                list_img2.append(i)
            for i in results1:
                list_img2.append(i)
            for i in results2:
                list_img2.append(i)
            for i in results3:
                list_img2.append(i)
            for i in results4:
                list_img2.append(i)
            for i in results5:
                list_img2.append(i)
            for i in results6:
                list_img2.append(i)
            for i in results7:
                list_img2.append(i)
            for i in results8:
                list_img2.append(i)
            for i in results9:
                list_img2.append(i)


# 找出不用的图片
def lack_img():
    global list_img3
    list_img3 = set(list_img1) - set(list_img2)


# 删除不用的图片
def rm_img(directory):
    # 获取目录下的所有文件和子目录
    files = os.listdir(directory)
    for file in files:
        if file == img_name:
            filee = os.listdir(os.path.join(directory, file))
            set1 = set(filee)
            set2 = set(list_img3)
            intersection = set1.intersection(set2)
            for i in intersection:
                try :
                    shutil.move(os.path.join(directory, '图片', i), path_file_back)
                except Exception as e:
                    print(str(e)+'e')


        # 如果是子目录,则递归遍历
        if os.path.isdir(os.path.join(directory, file)):
            rm_img(os.path.join(directory, file))




get_img(path_file)
get_file(path_file)
lack_img()
rm_img(path_file)

print("所有图片数量:", len(list_img1))
print("文本使用图片数量:",len(list_img2))
print("不使用图片数量:",len(list_img3))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/773207
推荐阅读
相关标签
  

闽ICP备14008679号