前言
在使用 Typora 的時候,我將圖片的儲存路徑設定為了如下所示:
這樣設定是為了更方便的管理筆記中的圖片,但圖片資料夾卻也顯示在了側邊欄中,隨著筆記增多,我的側邊欄越來越亂...
難道要忍氣吞聲嗎?那必不可能,在經過長時間的尋找,終於有了解決辦法!
解決方法
參考這篇文章「md之Typora如何將圖片集中儲存到統一的資料夾內,並使用相對路徑 」我發現,當資料夾的名稱以 .
開頭時是不會顯示在側邊欄中的。於是將圖片儲存路徑更改為: ./.${filename}.assets
修改了幾個已有的資料夾,發現確實有效:
但更改設定只能應用於新筆記,對於已有的筆記沒有作用。看著自己的一大堆筆記,我知道手動操作肯定是不行的,於是就去寫了一個小的 python 程式來自動操作。
程式碼
程式碼奉上:
import os
import re
def modify_content(path, md_name):
try:
# 臨時檔名
md_name_temp = 'temp_' + md_name
os.chdir(path)
# 開啟md檔案,fr用來讀取,fw用來更改後寫入生成新檔案
with open(md_name, 'r', encoding='utf8') as fr, \
open(md_name_temp, 'w', encoding='utf8') as fw:
# 讀取檔案內容
data = fr.read()
# 替換檔案內容
title = (md_name.split('.'))[0]
data = re.sub(title, '.' + title, data)
# 寫入檔案並關閉資源
fw.write(data)
fr.close()
fw.close()
# 刪除原檔案並用新檔案替換
os.remove(md_name)
os.rename(md_name_temp, md_name)
print(f'{md_name} done...')
except FileNotFoundError as e:
print(e)
if __name__ == '__main__':
# 要處理的目標路徑
work_dir = r'D:\Lenovo\Desktop\test'
try:
for root, dirs, files in os.walk(work_dir):
# 跳過.開頭的隱藏資料夾和.assets資料夾
if re.search('\.', root): continue
print('========================================')
print(f'Path: {root}')
count = 0
for dir in dirs:
match_img_foler = re.search('\.assets$', dir)
os.chdir(root)
if match_img_foler:
# 匹配到.assets資料夾,修改資料夾名
new_name = '.' + dir
os.rename(dir, new_name)
print(f'{dir} done...')
# 修改同名md檔案內容
md_name = re.sub('assets', 'md', dir)
modify_content(root, md_name)
count += 1
print(f'{count} Item Done!')
except Exception as e:
print(e)
設定工作路徑 work_dir
,程式會自動遍歷所有子路徑下的 assets 資料夾和 md 筆記並進行修改操作:
個人編碼水平較為淺薄,程式僅作為一個思路進行分享,如有不足和改進之處還請指出。
提醒:資料無價!執行程式前請 提前做好備份 ,重要文件請謹慎操作。