Typora 隱藏側邊欄圖片資料夾

KoiC發表於2023-04-26

前言

在使用 Typora 的時候,我將圖片的儲存路徑設定為了如下所示:

image

這樣設定是為了更方便的管理筆記中的圖片,但圖片資料夾卻也顯示在了側邊欄中,隨著筆記增多,我的側邊欄越來越亂...

image

難道要忍氣吞聲嗎?那必不可能,在經過長時間的尋找,終於有了解決辦法!

解決方法

參考這篇文章「md之Typora如何將圖片集中儲存到統一的資料夾內,並使用相對路徑 」我發現,當資料夾的名稱以 . 開頭時是不會顯示在側邊欄中的。於是將圖片儲存路徑更改為: ./.${filename}.assets

image

修改了幾個已有的資料夾,發現確實有效:

image

但更改設定只能應用於新筆記,對於已有的筆記沒有作用。看著自己的一大堆筆記,我知道手動操作肯定是不行的,於是就去寫了一個小的 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 筆記並進行修改操作:

image

個人編碼水平較為淺薄,程式僅作為一個思路進行分享,如有不足和改進之處還請指出。

提醒:資料無價!執行程式前請 提前做好備份 ,重要文件請謹慎操作。

參考

md之Typora如何將圖片集中儲存到統一的資料夾內,並使用相對路徑

用 Python 批次替換 md 檔案內容

相關文章