[python]Markdown图片引用格式批处理桌面应用程序
需求
使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md。有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的输出路径,用户拖入文件时,就能自动得到输出的路径
作用是将md文件中的例如
改成{% asset_img image-20240706062921362.png '"..." "文章配图"' %}
改成{% asset_img image-20240706063059015.png '"..." "文章配图"' %}
代码
import os
import re
import wx
from pathlib import Path
"""
使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md。有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的输出路径,用户拖入文件时,就能自动得到输出的路径
作用是将md文件中的例如
改成{% asset_img image-20240706062921362.png '"..." "文章配图"' %}
改成{% asset_img image-20240706063059015.png '"..." "文章配图"' %}
"""
class DropTarget(wx.FileDropTarget):
def __init__(self, window):
super().__init__()
self.window = window
def OnDropFiles(self, x, y, filenames):
self.window.set_filenames(filenames)
class MainFrame(wx.Frame):
def __init__(self, parent, title):
super().__init__(parent, title=title, size=(600, 400))
panel = wx.Panel(self)
self.text_input = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)
self.text_output = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)
self.btn_convert = wx.Button(panel, label="开始转换")
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(self.text_input, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(self.text_output, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
vbox.Add(self.btn_convert, flag=wx.EXPAND | wx.ALL, border=5)
panel.SetSizer(vbox)
self.SetDropTarget(DropTarget(self))
self.Bind(wx.EVT_BUTTON, self.on_convert, self.btn_convert)
self.Centre()
self.Show(True)
def set_filenames(self, filenames):
self.filenames = filenames
self.text_input.SetValue('\n'.join(filenames))
def on_convert(self, event):
for filename in self.filenames:
if filename.lower().endswith('.md'):
input_file_path = Path(filename)
output_file_path = input_file_path.with_name(input_file_path.stem + '_blog' + input_file_path.suffix)
self.text_output.AppendText(str(output_file_path) + '\n')
self.convert_markdown_images(str(input_file_path), str(output_file_path))
def convert_markdown_images(self, input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as file:
content = file.read()
# 修改正则表达式,以匹配Markdown图片链接
pattern = r'\!\[(?P<alt_text>.*?)\]\((?P<path>.*/)?(?P<file_name>.*?)(?P<extension>\..*)\)'
# 遍历所有匹配项并构建新的替换字符串
new_content = re.sub(pattern, lambda m: f'{{% asset_img {m.group("file_name")}{m.group("extension")} \'"{m.group("alt_text")}" "文章配图"\' %}}', content)
# 将修改后的内容写入输出文件
with open(output_file, 'w', encoding='utf-8') as file:
file.write(new_content)
wx.MessageBox(f"已成功转换'{input_file}'至'{output_file}'", "转换成功", wx.OK)
if __name__ == '__main__':
app = wx.App()
MainFrame(None, title="Markdown 图片链接转换器")
app.MainLoop()
if __name__ == '__main__':
app = wx.App()
MainFrame(None, title="Markdown Image Link Converter@萌狼蓝天(mllt.cc)")
app.MainLoop()
效果
{% asset_img image-20240706075502201.png '"image-20240706075502201" "文章配图"' %}

[python]Markdown图片引用格式批处理桌面应用程序的更多相关文章
- Python读取图片尺寸、图片格式
Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...
- Markdown 图片助手-MarkdownPicPicker
title: Markdown 图片助手 v0.1 toc: true comments: true date: 2016-06-04 16:40:06 tags: [Python, Markdown ...
- python智能图片识别系统(图片切割、图片识别、区别标识)
@ 目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行 ...
- 在word里插入图片,并设置图片的格式
由于公司业务需要,需要在生成的word里插入图片(公司印章),仔细想了下,还是在word模板里添加一个书签,然后再该书签的位置插入图片,并设置图片的格式方便些: 代码如下: using System; ...
- markdown图片转换demo
markdown图片转换demo 一直以来都是用Markdown来写博客的,但是它的图片嵌入实在是太让人头秃,逼得我能找网上的图片就不用自己的,实在是麻烦.所以我在发现了一个可以生成markdown样 ...
- Python批量图片识别并翻译——我用python给女朋友翻译化妆品标签
Python批量图片识别并翻译--我用python给女朋友翻译化妆品标签 最近小编遇到一个生存问题,女朋友让我给她翻译英文化妆品标签.美其名曰:"程序猿每天英语开发,英文一定很好吧,来帮我翻 ...
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱.怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目 ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
- 引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 需要在web.config增加配置 <startup use ...
随机推荐
- 《Vue.js 设计与实现》读书笔记 - 第6章、原始值的响应式方案 & 响应式总结
第6章.原始值的响应式方案 6.1 引入 ref 的概念 既然原始值无法使用 Proxy 我们就只能把原始值包裹起来. function ref(val) { const wrapper = { va ...
- C++中指针和数组相关的运算符优先级
概述 本文深入介绍了与指针和数组相关的运算符优先级,利用代码示例展示了当左结合和右结合运算符同时存在时的结合方式,同时也演示了如何使用()来强制人为指定结合顺序. 指针.数组相关的运算符优先级 下表展 ...
- 数据库周刊29│2020数据库研究报告;Oracle取消今年技术大会;腾讯云DBbridge发布支持一键迁库;饿了么迁至阿里云;PG数组查询;Oracle被比特币勒索;DM8 安全管理…
摘要:墨天轮数据库周刊第29期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.快讯:2020年Oracle OOW大会因疫情取消 系近20年首度[摘要]Oracle ...
- C++第六节课 引用变量 指针的升级版
#include <iostream> using namespace std; // C++的引用 是C指针的升级 可以提高代码的稳定性和健壮性 // const 修饰的引用 是 常引用 ...
- KubeSphere 3.4.0 发布:支持 K8s v1.26
2023 年 07 月 26 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.4.0 正式发布! 让我们先简单回顾下之前三个大版本的主要变化: KubeSphere 3. ...
- LDAP和SSO
什么是LDAP(Lightweight Directory Access Protocol)?很多公司会使用各种开源平台(例如: gitlab. Jenkins. chat 等等),维护这些账号是一件 ...
- Data-Free,多目标域适应合并方案,简单又有效 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Training-Free Model Merging for Multi-target Domain Adaptation 论文地址:htt ...
- Python一些常见的技巧及语句!!
题记:关于遇到的一些python代码或者不清楚用法的函数.类别等我会在这里记录下来,方便日后学习和交流.之后研究生三年我会持续更新学习,可能得记录几千个吧. 1. copy.copy()和copy.d ...
- 解决mac中wxpython对64位的支持
今天mac 10.10.5中安装wxpython,安装完wxpython使用import wx导入模块时出现 Traceback (most recent call last): File " ...
- 如何在离线的Linux服务器上部署 Ollama,并使用 Ollama 管理运行 Qwen 大模型
手动安装 Ollama 根据Linux的版本下载对应版本的 Ollama, 查看Linux CPU型号,使用下面的命令 #查看Linux版本号 cat /proc/version #查看cpu架构 l ...