日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Markdown文件导出为HTML的小程序

發(fā)布時間:2023/12/10 HTML 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Markdown文件导出为HTML的小程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Markdown文件導出為HTML的小程序

為什么做

最近把一些學習經(jīng)驗記下來,總結成MarkDown文件,不知不覺已經(jīng)有12篇了。
Sublime Text 的 MarkDown Preview 插件能夠將MarkDown語法轉換為HTML,并提供三種預覽方式:瀏覽器預覽、保存為HTML文件、輸出到Sublime的新標簽頁。

但有一個缺點是,我有12個MarkDown文件,想分別轉換為HTML文件,需要重復執(zhí)行12次打開文件->Crtl+P調出命令面板->輸入MarkDown Preview->選擇Save To HTML->選擇保存路徑->確定。

我突發(fā)奇想,Sublime是基于Python的,何不利用MarkDown Preview的API,寫一個Python腳本,進行批量轉換。這樣,無論是12篇,還是120篇,都可以通過一個命令輕松完成轉換,避免了重復勞動。

怎么做的

我通過Sublime的Preferences->Browse Packages找到了一個名為python-markdwon的文件夾,似乎是用來支持MarkDown轉換的。
閱讀了其中的__init__.py文件,了解到這個包可以將MarkDown轉換為HTML。它提供了兩個API:

  • html = markdown.markdown(your_text_string)

  • html = markdown.markdownFromFile(file_name)

如此簡單易用,就是它了!

經(jīng)過測試,markdown.markdownFromFile()這個函數(shù)對中文支持較差:如果文件內(nèi)容含有漢字,轉換后的html字符串出現(xiàn)奇怪的亂碼。似乎可以提供附加參數(shù)指定編碼格式,但我決定不去偷這個懶(好吧,其實是懶得去研究源代碼)。

設計思路很簡單:

  • 在指定文件夾內(nèi)讀取所有.md文件:

for x in os.listdir('./input'): if os.path.splitext(x)[1]=='.md':...
  • 對每個.md文件,其內(nèi)容是一個字符串

with open('/path/file_name.md', 'r') as f:md = f.read()
  • 利用markdown.markdown()轉換為HTML格式對字符串

html = markdown.markdown(md)
  • 將HTML格式字符串寫入到.html文件內(nèi)

with open('/path/file_name.html', 'w') as f:f.write(html)

當然,其中還要考慮路徑、字符編碼等問題。這里并沒有列出,詳細代碼可參看下文。

怎么用

我建立了這樣的文件結構:

.|---markdown||---input| |---1.md| |---2.md||---output| |---1.html| |---2.html||---run.py||---empty_output.py
  • markdown文件夾是從Sublime插件目錄的python-markdown直接復制過來的。

  • input文件夾內(nèi)放的是轉換前的MarkDown文件,目前只支持英文文件名。

  • output文件夾里是自動生產(chǎn)的轉換后的HTML文件,與對應的MarkDown文件同名。

  • run.py是執(zhí)行的腳本文件,用來將MarkDown轉換為HTML。

  • empty_output.py用來清空output文件夾的內(nèi)容,但不刪除該文件夾。

運行步驟很簡單:

  • 將MarkDown文件通通放入input文件夾下

  • 命令行執(zhí)行python run.py

  • 去output文件夾下找轉換后的文件

為什么只支持英文文件名呢?這個問題我也想解決,搜了一些博客,在MacOS下測試中文文件名都一切OK。但是換到了Windows下就翻臉不認人。還是我Python道行太淺,索性就只支持英文文件名吧。

做出了什么

這里貼一下run.py和empty_output.py的代碼。最核心的轉換算法python-markdown可以在GitHub上搜到。

整個程序的源碼可以在這里得到。

run.py

import osimport markdownimport codecsimport sysreload(sys)sys.setdefaultencoding('utf-8')input_dir = './input'ouput_dir = './output'input_file_type = '.md'ouput_file_type = '.html'print '\n'for full_input_file_name in os.listdir(input_dir):if os.path.splitext(full_input_file_name)[1]==input_file_type:print 'Converting ' + full_input_file_name + ' ...'file_name = os.path.splitext(full_input_file_name)[0]full_input_file_name = input_dir + '/' + full_input_file_namefull_ouput_file_name = ouput_dir + '/' + file_name + ouput_file_typewith codecs.open(full_input_file_name, 'r') as ifile:in_file_content = ifile.read()ou_file_content = markdown.markdown(in_file_content)with codecs.open(full_ouput_file_name, 'w', 'gbk') as ofile:ofile.write(ou_file_content)print '\nAll Done!'

empty_output.py

import osimport markdownimport codecsimport sysreload(sys)sys.setdefaultencoding('utf-8')ouput_dir = './output'print '\n'for file_name in os.listdir(ouput_dir):print 'Deleting ' + file_name + ' ...'full_file_name = ouput_dir + '/' + file_nameos.remove(full_file_name)print '\nAll Done!'

轉載于:https://www.cnblogs.com/gymmer/p/5991183.html

總結

以上是生活随笔為你收集整理的Markdown文件导出为HTML的小程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。