美文网首页
【办公自动化】批量将Markdown文件转换为纯文本文件

【办公自动化】批量将Markdown文件转换为纯文本文件

作者: 木头左 | 来源:发表于2024-02-26 17:01 被阅读0次

    本文介绍如何将 Markdown 文件转换为纯文本文件。Markdown 是一种轻量级的标记语言,用于编写格式简单的文档。但是,有时候我们需要将 Markdown 文件转换为纯文本文件,以便进行其他处理或直接在浏览器中查看。下面介绍一种简单的方法来实现这个功能。

    转成html

    要将Markdown文件转换为html文件,可以使用Python的markdown库。首先确保已经安装了markdown库,如果没有安装,可以使用以下命令安装:

    pip install markdown
    

    然后,可以使用以下代码将Markdown文件转换为纯文本文件:

    import markdown
    
    def md_to_txt(md_file, txt_file):
        with open(md_file, 'r', encoding='utf-8') as f:
            md_content = f.read()
            txt_content = markdown.markdown(md_content)
        
        with open(txt_file, 'w', encoding='utf-8') as f:
            f.write(txt_content)
    
    md_file = 'example.md'  # Markdown文件路径
    txt_file = 'example.html'  # 转换后的纯文本文件路径
    md_to_txt(md_file, txt_file)
    

    example.md替换为要转换的Markdown文件的路径,将example.txt替换为要保存的html文件的路径。

    转成txt

    如果要去掉链接,只保存纯文本,我们定义了一个函数 md_to_txt(),它接受两个参数:md_file 是 Markdown 文件的路径,txt_file 是转换后的纯文本文件的路径。函数首先使用 open() 函数读取 Markdown 文件的内容,并将其按行拆分成一个字符串列表 str_list。然后,它遍历列表中的每一行,忽略包含特定关键字(如 ![https)的行,并移除特定的文本(如 如下图所示:)。将处理后的文本添加到 txt_content 变量中,并根据需要更新标题和类别信息,将 txt_content 写入到指定路径下的纯文本文件中,并打印转换完成的消息。

    import os
    import re
    import markdown2 as mdk
    
    def traverse_dir_files(root_dir, ext=None, is_sorted=True):
        """
        列出文件夹中的文件, 深度遍历
        :param root_dir: 根目录
        :param ext: 后缀名
        :param is_sorted: 是否排序,耗时较长
        :return: [文件路径列表, 文件名称列表]
        """
        names_list = []
        paths_list = []
        for parent, _, fileNames in os.walk(root_dir):
            for name in fileNames:
                if name.startswith('.'):  # 去除隐藏文件
                    continue
                if ext:  # 根据后缀名搜索
                    if name.endswith(tuple(ext)):
                        names_list.append(name)
                        paths_list.append(os.path.join(parent, name))
                else:
                    names_list.append(name)
                    paths_list.append(os.path.join(parent, name))
        if not names_list:  # 文件夹为空
            return paths_list, names_list
        # if is_sorted:
        #     paths_list, names_list = sort_two_list(paths_list, names_list)
        print(paths_list)
        return paths_list
    def remove_code_blocks(text):
        return re.sub(r'```(.*?)```', '', text, flags=re.DOTALL)
    
    def md_to_txt(md_file, txt_file):
        txt_content = ''
        title = os.path.basename(md_file).replace('.md','').strip()
        with open(md_file, 'r', encoding='utf-8') as f:
            str_list = f.read().splitlines()    
            for md in str_list:
                if '![' in md or 'https' in md:
                    continue
                md = md.replace('如下图所示:', '')
                txt_content += md +'
    '
                if 'title:' in md:
                    title = md.replace('title:','').strip()    
                if 'category:' in md:
                    category = md.replace('category:','').strip()    
                title = category + '_' + title
        os.makedirs(os.path.dirname(txt_file), exist_ok=True) # 如果目录不存在则创建目录
        with open(os.path.join(txt_file,title+'.txt'), 'w', encoding='utf-8') as f:
            f.write(txt_content)
            print("转换完成:%s" % (md_file))
    

    遍历指定目录

    定义了一个函数 readlist(),它用于遍历指定目录下的所有 Markdown 文件,并调用 md_to_txt()函数进行转换。它接受两个参数:path 是待遍历的目录路径,txt_dir 是转换后的纯文本文件存放的目录路径。函数使用 dir_util.traverse_dir_files() 方法获取目录下所有扩展名为 .md 的文件路径,并存储在 path_list 列表中。然后,它遍历列表中的每个文件路径,并尝试调用 md_to_txt() 函数进行转换。如果转换过程中出现异常,它会打印出错误消息。

    def readlist(path, txt_dir):
        path_list = dir_util.traverse_dir_files(root_dir=path, ext='.md')
        res = []
        for path_str in path_list:
            try:
                md_to_txt(path_str, txt_dir)
            except Exception as e:
                print(path_str + '---------error-----------')
                print(e)
    

    最后,我们可以在 Python 脚本中调用这两个函数来实现 Markdown 到纯文本的转换。例如,假设我们有一个 Markdown 文件 data/tree.md,我们想将其转换为纯文本文件并保存到 data/txt 目录下,可以这样写代码:

    if __name__ == '__main__':
        md_file = r'data\' # Markdown文件路径
        txt_dir = r'data\txt' # 转换后的纯文本文件存放的目录路径
        readlist(md_file, txt_dir)
    

    运行这段代码后,会在 data/txt 目录下生成一个以 tree.md 为文件名的纯文本文件,文本内容与原 Markdown 文件相同。

    [图片上传失败...(image-81b198-1708819413740)]

    相关文章

      网友评论

          本文标题:【办公自动化】批量将Markdown文件转换为纯文本文件

          本文链接:https://www.haomeiwen.com/subject/fwanadtx.html