一天,有网友分享了一个神秘的压缩包,因为好奇心驱使,我毫不犹豫地下载并打开了它。压缩包里竟然装满了各式各样的文件夹,而绝大部分都是.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的神奇点赞,不仅成功解决了文件的转换问题,还学到了一段魔法代码。愿你也能体会到这份快乐!