批量markdown 转 word 的小工具

我们会用到一个叫 pandoc 的小工具,再结合python 脚本。

  1. 下载 pandoc工具,https://github.com/jgm/pandoc/releases/latest

  2. 本地打开一个终端,输入 pandoc -v
    在这里插入图片描述

  3. 先本地装好可以运行python(3.7以上) 的环境,大家自行网上查找 python 的安装教程,此文不再赘述。

运行以下python脚本,注意 设置输入和输出文件夹路径:

import os
import pypandoc
import subprocess

def convert_md_to_doc(md_file, output_folder):
    """
    使用 pandoc 将单个 Markdown 文件转换为 DOC 文件,并处理图片
    """
    # 获取文件名(不带扩展名)
    file_name = os.path.splitext(os.path.basename(md_file))[0]
    print('current file name',file_name)
    
    # 设置输出文件路径
    #output_file = os.path.join(output_folder, f"{file_name}.docx")
    output_file = os.path.join(os.path.dirname(md_file), f"{file_name}.docx")
    
    if os.path.exists(output_file):
        pass
    else:
        with open(output_file,'w') as f:
            f.close()
    print('output file path is',output_file)
    
    # 使用 pandoc 进行转换
    cmd = 'pandoc'+" "+md_file+' -o '+output_file+' --extract-media=.'
    
    father_dir = os.path.dirname(md_file)
    # 进入到 markdown 所在文件夹目录
    os.chdir(father_dir)
    os.system(cmd)
    
    #subprocess.run(cmd,shell=True)
    # subprocess.run([
    #     "pandoc", md_file, "-o", output_file, "--extract-media=."
    # ])
    print(f"Converted {md_file} to {output_file}")

def batch_convert_md_to_doc(input_folder, output_folder):
    """
    批量将指定文件夹中的 Markdown 文件转换为 DOC 文件
    """
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 遍历输入文件夹中的所有 Markdown 文件
    for root, dirs, files in os.walk(input_folder):
        for file in files:
            if file.endswith(".md"):
                md_file = os.path.join(root, file)
                convert_md_to_doc(md_file, output_folder)

if __name__ == "__main__":
    # 设置输入和输出文件夹路径
    input_folder = "your input path"
    output_folder = "your output path"
    
    # 执行批量转换
    batch_convert_md_to_doc(input_folder, output_folder)

运行成功后:

在这里插入图片描述

注意一下,针对于 markdown 中 的图片,最好使用相对路径,如本文示例图片都是在 figures 文件夹中。

遇到的问题:

由于我使用的是 vscode 运行代码,在调用终端时发现 pandoc 不支持,但是电脑环境的终端是支持 pandoc的。

查找资料后,发现是 vscode 的终端环境变量和 电脑自带的终端环境变量不一致。

解决方法:

打开 vscode settings.json,将 vscode 的环境变量和 电脑的保持一致:

加入 这句
“terminal.integrated.env.windows”: {
“PATH”: “${env:PATH}”,

{
    "python.defaultInterpreterPath": "C:\\Users\\AppData\\Local\\Programs\\Python\\Python38\\python.exe",
    "launch": {
        "configurations": [
        
        ]
    },
    "cmake.showOptionsMovedNotification": false,
    "terminal.integrated.defaultProfile.windows": "PowerShell",
    "terminal.integrated.env.windows": {
        "PATH": "${env:PATH}",  // 保留系统 PATH


    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值