| 
                         7.将 Markdown 转换为 HTML。 
- import sys 
 - import os 
 - from bs4 import BeautifulSoup 
 - import markdown 
 - class MarkdownToHtml: 
 -  headTag = '<head><meta charset="utf-8" /></head>' 
 -  def __init__(self,cssFilePath = None): 
 -  if cssFilePath != None: 
 -  self.genStyle(cssFilePath) 
 -  def genStyle(self,cssFilePath): 
 -  with open(cssFilePath,'r') as f: 
 -  cssString = f.read() 
 -  self.headTag = self.headTag[:-7] + '<style type="text/css">{}</style>'.format(cssString) + self.headTag[-7:] 
 -  def markdownToHtml(self, sourceFilePath, destinationDirectory = None, outputFileName = None): 
 -  if not destinationDirectory: 
 -  # 未定义输出目录则将源文件目录(注意要转换为绝对路径)作为输出目录 
 -  destinationDirectory = os.path.dirname(os.path.abspath(sourceFilePath)) 
 -  if not outputFileName: 
 -  # 未定义输出文件名则沿用输入文件名 
 -  outputFileName = os.path.splitext(os.path.basename(sourceFilePath))[0] + '.html' 
 -  if destinationDirectory[-1] != '/': 
 -  destinationDirectory += '/' 
 -  with open(sourceFilePath,'r', encoding='utf8') as f: 
 -  markdownText = f.read() 
 -  # 编译出原始 HTML 文本 
 -  rawHtml = self.headTag + markdown.markdown(markdownText,output_format='html5') 
 -  # 格式化 HTML 文本为可读性更强的格式 
 -  beautifyHtml = BeautifulSoup(rawHtml,'html5lib').prettify() 
 -  with open(destinationDirectory + outputFileName, 'w', encoding='utf8') as f: 
 -  f.write(beautifyHtml) 
 - if __name__ == "__main__": 
 -  mth = MarkdownToHtml() 
 -  # 做一个命令行参数列表的浅拷贝,不包含脚本文件名 
 -  argv = sys.argv[1:] 
 -  # 目前列表 argv 可能包含源文件路径之外的元素(即选项信息) 
 -  # 程序最后遍历列表 argv 进行编译 markdown 时,列表中的元素必须全部是源文件路径 
 -  outputDirectory = None 
 -  if '-s' in argv: 
 -  cssArgIndex = argv.index('-s') +1 
 -  cssFilePath = argv[cssArgIndex] 
 -  # 检测样式表文件路径是否有效 
 -  if not os.path.isfile(cssFilePath): 
 -  print('Invalid Path: '+cssFilePath) 
 -  sys.exit() 
 -  mth.genStyle(cssFilePath) 
 -  # pop 顺序不能随意变化 
 -  argv.pop(cssArgIndex) 
 -  argv.pop(cssArgIndex-1) 
 -  if '-o' in argv: 
 -  dirArgIndex = argv.index('-o') +1 
 -  outputDirectory = argv[dirArgIndex] 
 -  # 检测输出目录是否有效 
 -  if not os.path.isdir(outputDirectory): 
 -  print('Invalid Directory: ' + outputDirectory) 
 -  sys.exit() 
 -  # pop 顺序不能随意变化 
 -  argv.pop(dirArgIndex) 
 -  argv.pop(dirArgIndex-1) 
 -  # 至此,列表 argv 中的元素均是源文件路径 
 -  # 遍历所有源文件路径 
 -  for filePath in argv: 
 -  # 判断文件路径是否有效 
 -  if os.path.isfile(filePath): 
 -  mth.markdownToHtml(filePath, outputDirectory) 
 -  else: 
 -  print('Invalid Path: ' + filePath) 
 
                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |