文件夹瘦身"/>
typora assets文件夹瘦身
typora assets文件夹瘦身
程序作用
typora编辑器设置本地图片保存路径为 {filename}.assets
之后,复制黏贴的图片会自动保存在这个 {filename}.assets
。问题来了,复制文件,图片会自动保存到assets文件夹,并在markdown文件产生该图片链接语法![]()
,但是删除、修改markdown中的图片链接语句,并不会删除assets删除图片,这导致了经常assets文件夹会产生很大的无用图片,本地上是没什么的,但是上传到github等平台就很麻烦,毕竟图片很大,是markdown存储的一个痛点。这个python文件就是读取markdown文件,搜索文件的 ![]()
图片引用,并且删除assets文件夹不会被引用的图片。
源代码
markdown_pic.py
python markdown_pic.py test.md
import re
import os
import sys# 获取文件的绝对路径并将其转化为linux形式的路径
def parse_path(path: str):# os.path.exists(path)if not os.path.isfile(path):print("file {0} is not exist".format(path))exit(-1)path = os.path.abspath(path)regex = repile(r"\\+")path = re.split(regex, path)path = '/'.join(path)index = path.rfind("/")file_name = path[index + 1:]dir_name = path[0:index + 1]return dir_name, file_namedef delete_useless_markdown_pic(path: str):dir_name, file_name = parse_path(path)with open(path, "r", encoding="utf-8") as f:s = f.readlines()s = "".join(s)# .*? 匹配符号内的所有字符# markdown内容提取results_img = re.findall(r'!\[.*?\]\((.*?)\)', s) # 提最述与rulresults_src = re.findall(r'<img\s*(.*?)\s*/>', s)print("url img")print(results_src)set_pic = set()set_asset = set()asset = file_name.split(".")[0] + ".assets"asset_path = dir_name + assetfor result in results_img:if result.split("/")[0] == asset:set_pic.add(result.split("/")[-1])for result in results_src:result = result.split("alt")[0].strip().split("=")[-1].strip().strip('"')if result.split("/")[0] == asset:set_pic.add(result.split("/")[-1])if len(set_pic) == 0:returnprint(set_pic)dirs = os.listdir(asset_path)for i in dirs:set_asset.add(i)set_delete = set_asset - set_picfor i in set_delete:os.remove(asset_path + "/" + i)if __name__ == '__main__':if len(sys.argv) != 2:print("usage like this:python markdown_pic.py xx.md")exit(-1)markdown = sys.argv[1]dirname, filename = parse_path(markdown)print(dirname)print(filename)delete_useless_markdown_pic(markdown)
注意
本地测试过,ok!用户不放心的话可以先备份,在测试
更多推荐
typora assets文件夹瘦身
发布评论