Loading

Markdown文件中的图片批量居中并设置固定宽度

下面这段代码可以处理一个文件夹下的所有文件,如果想处理单个文件,可以自己添加输入参数。

# 将指定文件夹下所有md文件中的图片以html格式居中
import os
import shutil
import glob

path = './'
modify_flag = False


def img_formate(file_in):
    global modify_flag
    #file_in = "桌面笔记本.md"
    print(file_in)
    file_out = os.path.splitext(file_in)[0] + "_out.md" # 分离文件名与扩展名,然后添加后缀
    #print(os.path.splitext(file_in)[0]) # 分离文件名与扩展名
    #print(file_out)

    modify_flag = False # 重置全局变量

    def parase_line(lines):
        global modify_flag
        for s in lines:
            #print(s)
            if s[:9] == "<img src=":
                modify_flag = True
                print(s)
                #print(s[10:])
                s1 = s[10:] # 后缀, 从第一个引号之后开始
                url_len = s1.find('"')
                #print (url_len) # 查找第一个引号
                url = s1[:url_len]
                #print(url)
                s_out = '<div align="center"> <img src="%s" width="400px" /> </div>\n' % url
                #print(s_out)
                fp.write(s_out)
            elif "![" in s:
                modify_flag = True
                print(s)
                url = s.split('(')[-1].split(')')[0]
                #print(url)
                s_out = '<div align="center"> <img src="%s" width="400px" /> </div>\n' % url
                #print(s_out)
                fp.write(s_out)
            else:
                fp.write(s)

    file = open(file_in, 'r', encoding='gbk')
    fp = open(file_out, 'w', encoding='gbk')
    try:
        lines = file.readlines()
    except  UnicodeDecodeError:
        fp.close()
        file.close()
        file = open(file_in, 'r', encoding='utf-8')
        fp = open(file_out, 'w', encoding='utf-8')
        lines = file.readlines()
        parase_line(lines)
    else:
        parase_line(lines)


    fp.close()
    file.close()

    print("Modify: ", modify_flag, "\n")
    if modify_flag: # 修改过原文件
        shutil.move( file_in, os.path.splitext(file_in)[0] + "_bak.md")
        shutil.move( file_out, file_in)
    else:
        os.remove(file_out)


#f_list = os.listdir(path)
f_list = glob.glob(os.path.join(path, '*.md'))
#print(f_list)
for f in f_list:
    #print (f)
    img_formate(f)

相关参考

MarkDown文件中的图片批量居中并设置固定宽度_MrRen_sdhm的博客-CSDN博客

如何批量上传笔记到各大博客平台(支持md、.doc等多种格式) - 臻の境意 - 博客园 (cnblogs.com)

Daring Fireball: Markdown Syntax Documentation

leepenney/markdown-gallery: Converts a list of images into gallery mark-up (github.com)

MarkDown设置图片居中与大小_donghongyi的博客-CSDN博客

posted @ 2021-12-13 22:27  straywriter  阅读(497)  评论(0编辑  收藏  举报