李成笔记网

专注域名、站长SEO知识分享与实战技巧

批量转换文件后缀名txt_to_md以适应Obsidian

一天,有网友分享了一个神秘的压缩包,因为好奇心驱使,我毫不犹豫地下载并打开了它。压缩包里竟然装满了各式各样的文件夹,而绝大部分都是.txt文件。在Windows资源管理器中查看这堆.txt文件有点像大海捞针,因为每个文件里都塞的网址链接,打开它们就像参加一场点击链接的马拉松比赛。

在转换之前,我的文件夹看起来就像这样:

那么问题来了,如何让这些文件更亲切地融入我的Obsidian笔记本?简单,将它们搬家到Obsidian的库中。这样,使用Obsidian打开这些链接就变得非常轻松。但是,有一个小挑战,需要将上百个文本文件转换成Markdown格式,而且它们并不在同一个文件夹中,简直像是整理一群乱飞的苍蝇。

于是,我想到了ChatGPT,向它请教如何解决这个问题。GPT不负众望,毫不含糊地给了我一段Python代码,我将它保存为一个“rename.py”文件,然后在CMD中运行PowerShell。当我完成这一切后,所有文件都变成了.md格式。但是,问题出现了,只有英文显示正常,中文却像都是乱码。

我又向GPT请教,GPT告诉我问题出在文件格式上,我查看了未转换的备份文件,发现它们都是以“ANSI”格式保存的。

再次向GPT请教,他不仅修改了代码,还在其中加入了一个“魔法咒语”,将文件从“ANSI”格式一下子变成了“UTF-8”格式。我再次尝试,这次终于完美解决了问题。

最后,这是修改后的代码:

import os
import codecs

def rename_txt_to_md_and_convert_encoding(directory):
    # 遍历目录中的所有文件和子文件夹
    for root, _, files in os.walk(directory):
        for file_name in files:
            # 检查文件是否以.txt结尾
            if file_name.endswith('.txt'):
                # 构建旧文件路径和新文件路径
                old_file_path = os.path.join(root, file_name)
                new_file_path = os.path.join(root, file_name.replace('.txt', '.md'))

                # 检查目标文件是否已经存在
                if not os.path.exists(new_file_path):
                    # 重命名文件
                    os.rename(old_file_path, new_file_path)
                    print(f'将文件 {old_file_path} 重命名为 {new_file_path}')

                    # 尝试将ANSI编码的文件转换为UTF-8编码
                    try:
                        with codecs.open(new_file_path, 'r', 'ansi') as ansi_file:
                            utf8_content = ansi_file.read()
                        with codecs.open(new_file_path, 'w', 'utf-8') as utf8_file:
                            utf8_file.write(utf8_content)

                        print(f'已将文件 {new_file_path} 从ANSI转换为UTF-8')
                    except Exception as e:
                        print(f'无法处理文件 {new_file_path}: {e}')
                else:
                    print(f'目标文件 {new_file_path} 已经存在,跳过重命名')

# 指定要修改的根文件夹路径
root_folder_path = r'F:\001_test'

# 调用函数来递归修改文件扩展名和文件编码
rename_txt_to_md_and_convert_encoding(root_folder_path)

print('批量修改文件扩展名和文件编码完成')

在PowerShell中,只需使用“cd”命令进入文件夹,然后执行以下代码:

python rename.py

转换后,我的文件夹里的txt全都变成了markdown,搜索“.md”如下所示:

最终,我只需将转换后的文件夹复制到Obsidian的库中,点击链接,就像吃薯片一样轻松,而且视频和PDF文档也可以在Obsidian中轻松欣赏。

最后,为AI的神奇点赞,不仅成功解决了文件的转换问题,还学到了一段魔法代码。愿你也能体会到这份快乐!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言