typora删除多余图片

import os
import re
import shutil
from bs4 import BeautifulSoup

import warnings

warnings.filterwarnings('ignore')
# 定义正则表达式用于匹配.md文件中的图片引用语句
pattern = re.compile(r'!\[.*]\((.*)\)')

# 获取所有.md文件中的图片引用路径
references = set()
md_filepath = input("请输入 Markdown 文件所在目录的路径 : ")
# md_filepath = r'{}'.format(md_filepath)

for file in os.listdir(md_filepath):
    if file.endswith('.md'):  # 扫描该路径下的所有.md文件,并查找其中的图片
        with open(os.path.join(md_filepath, file), 'r', encoding='utf-8') as f:
            text = f.read()
            references.update(pattern.findall(text))
            soup = BeautifulSoup(text, 'html.parser')
            for img in soup.find_all('img'):
                src = img.get('src')
                if src:
                    references.add(os.path.join(md_filepath, src))

print(f"在此路径中的所有.md文件中总共找到的所有图片{len(references)}张\n")
hyperlink_pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\$\$,]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
print("寻找到的超链接:")
print([item for item in references if hyperlink_pattern.search(item)])
# C:\Users\asssio\Desktop\mark
# 删除包含超链接的元素
references_new = [item for item in references if not hyperlink_pattern.search(item)]
print(f"在此路径中的所有.md文件中总共找到引用图片{len(references_new)}张")
print("寻找到的实际链接:")
print(references_new)

usedImages = set()
for each in references_new:
    usedImages.add(each.split('/')[-1])


# 获取.assets目录的路径
assets_filepath = input("请输入.assets目录的路径: ")

# 遍历.assets目录中的所有文件,将未被引用的图片移动到 delete 目录中
if not os.path.exists(os.path.join(assets_filepath, 'delete')):
    os.mkdir(os.path.join(assets_filepath, 'delete'))

allImageNum = 0
deleteNum = 0
for file in os.listdir(assets_filepath):
    allImageNum += 1
    # print(file)
    if file not in usedImages:
        shutil.move(os.path.join(assets_filepath, file), os.path.join(assets_filepath, 'delete'))
        print(f"移动图片{file}到delete文件夹中")
        deleteNum += 1

print(f"assert文件夹中总共有图片{allImageNum}张\n总共移动{deleteNum}张图片到delete中")

运行结果

在这里插入图片描述

相关推荐

  1. typora图片问题以及快捷键问题汇总

    2024-07-14 01:32:03       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 01:32:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 01:32:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 01:32:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 01:32:03       69 阅读

热门阅读

  1. Python标准库中的HTTP客户端模块

    2024-07-14 01:32:03       22 阅读
  2. HTTPS的工作原理(HTTPS建立连接的过程)

    2024-07-14 01:32:03       19 阅读
  3. 记录一点mybatis的坑

    2024-07-14 01:32:03       19 阅读
  4. 5Python的Pandas:数据结构

    2024-07-14 01:32:03       16 阅读
  5. 【技术支持】npm镜像设置

    2024-07-14 01:32:03       18 阅读
  6. 2024.7.31 Spyglass dft tcl 及sgdc使用总结

    2024-07-14 01:32:03       19 阅读
  7. Qt- 槽函数和普通函数的主要区别

    2024-07-14 01:32:03       20 阅读
  8. SQL基本查询

    2024-07-14 01:32:03       20 阅读
  9. 开箱Windows server 2025

    2024-07-14 01:32:03       21 阅读
  10. 0/1背包

    2024-07-14 01:32:03       21 阅读
  11. python的readline()和readlines()

    2024-07-14 01:32:03       21 阅读
  12. 【date】

    2024-07-14 01:32:03       17 阅读
  13. Reinforement Learning学习记录(五)

    2024-07-14 01:32:03       18 阅读