MarkDown文件中的圖片批量居中並設置固定寬度

批量轉換![](https://image.jpg)<img src="https://image.jpg" alt="img" style="zoom:67%;" />格式的MarkDown圖片爲<div align="center"> <img src="https://image.jpg" width="400px" /> </div>格式,以符合GFM標準,從而實現GitHub中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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章