【Python应用】- 更改md文件下的图片连接

【Python应用】- 更改md文件下的图片连接,第1张

背景

由于换了一台新电脑,Typora上的笔记需要进行迁移,但是迁移过后发现图片连接的位置对应不上。


在此,作者就像用所学知识,编写一个脚本,更改文件夹下 .md 文件中所有图片的链接

关键知识

脚本中编写了两个函数,

  • renameFileSuffix 改变文件后缀名
  • modifyFileContent,改变文件中的指定内容

用到了两个库

  • re:正则
  • os:文本 *** 作

关键思想:

  • 迭代
  • 中文编码问题
  • 忽略告警 errors='ignore'

知识点:

  • Python File
  • Python OS
  • 正则表达式
代码
import os
import re

# 给文件重命名
# 由于无法直接读取 .md 文件的内容,因此先要强制进行转换
def renameFileSuffix(cwd,srcSuffix,dstSuffix):
    files = os.listdir(cwd)        #得到文件夹下面的所有名称
    #print(files)

    # 如果是文件夹,则需要进行迭代
    for file in files:
        if os.path.isdir(cwd+'/'+file):                         #如果是文件夹,则继续执行
            #print('是文件夹')
            renameFileSuffix(cwd+"/"+file,srcSuffix,dstSuffix)           #迭代,调用自己

        # 如果不是文件夹,直接读取数据
        else:
            src = os.path.join(cwd, cwd+'/'+file)                    #源路径,例如 C:/test/test.md
            dst = os.path.join(cwd, cwd+'/'+file.replace(srcSuffix,dstSuffix))                    #目的路径,例如 C:/test/test.txt
            os.rename(src, dst)


# 读取文件夹下文件的内容
def modifyFileContent(path,regexStr,newStr):
    files = os.listdir(path)                            #得到文件夹下面的所有名称
    #print(files)

    # 如果是文件夹,则需要进行迭代
    for file in files:
        if os.path.isdir(path+'/'+file):                          #如果是文件夹,则继续执行
            #print('是文件夹')
            modifyFileContent(path+"/"+file,regexStr,newStr)                      #迭代,调用自己

        # 如果不是文件夹,直接读取数据
        else:
            with open(path+"/"+file,encoding='UTF-8',errors='ignore') as f:        # 如果是文件夹,则获得此路径
                s = f.read()
                if re.search(regexStr,s):
                    s.replace(regexStr,newStr)
                #print(str.replace(regexStr,newStr))
                f.close()
            with open(path+"/"+file,'w',encoding='UTF-8',errors='ignore') as f2:       # 忽略某些报错,因为在运行的过程中,会有很多乱码(不可见字符)导致程序中断
                #print('文件写入')
                f2.write(s.replace(regexStr,newStr))
                f.close()


if __name__ == "__main__":

    srcSuffix = '.md'
    dstSuffix = '.txt'

    regexstr = 'E:\desktop\file'                        #原始内容
    newstr = 'C:\Users\XieZhendong\Documents'          #更改后的内容
    cwd = 'C:/Users/XieZhendong/Desktop/桌面/笔记'          #要更改的当前目录

    renameFileSuffix(cwd);                               #将md文件改为txt文件
    modifyFileContent(cwd, regexstr, newstr)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/570147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存