markdown上传图片时出错,markdown图片上传

  markdown上传图片时出错,markdown图片上传

  前言:

  以前,我的笔记工具一直是观念,我没有写博客的习惯。但是第一,因为ideal的服务器在国外,所以有时候不稳定;第二,因为分享观念非常不方便,所以你必须在与他人分享你的笔记并点击链接后才能查看内容。于是我在掘金平台上写了几篇短文,但是掘金的文章无法通过本地Markdown上传直接发表,也无法下载之前上传的文章。导致数据不保存在本地,以后文章迁移到其他平台的成本更高。

  后来在哔哩哔哩up的高手TheCW的推荐下学会了使用Linux和vim,然后就喜欢上了不用离开键盘用vim写Markdown的感觉。而且博客园还开放了Metaweblog接口,可以方便地将本地笔记发布到自己的博客园。

  灵感来源用vim写笔记不像opinion,可以随时删除不需要的图片,不会在本地留下垃圾文件。(typora没怎么用过,也不知道有没有类似的功能。)删除本地笔记的图片引用后,垃圾图片还是会留在文件夹里。之前的做法是每次删除图片后在文件夹中搜索同名图片,然后删除。这种方法效率低,费时,于是就有了写一个小工具自动清理图片而不需要引用的想法。

  基于Python不重复造轮子的原则,我先在国内网上搜了一下(看不懂英文),只看到CSDN上有人用java写了一个类似的工具,但内容不是很懂,也没有现成的工具包下载,只有源代码。(我很懒.)

  当然这种小工具在Python里更友好~而我就是从头开始看Python来写这种东西的。可以说我之前对这种语言一无所知,只知道它很流行...............

  如何使用# utf-8?因为只有一个文件,所以花一分钟看看源代码就大概知道了。原理极其简单。(一个学了一下午python的人能写出什么复杂的东西)

  复制/移动。py文件保存到您喜欢的位置,将路径设置为环境变量path,或者使用到/usr/bin目录的软链接。

  由于容量有限,开发时间短,工作目录必须严格遵循以下形式(以后可能会优化)。a.jpg b.png c.png—imgs———————list.md—注. md 。

  所有Markdown文件都需要位于当前目录中,而所有图片文件都需要位于。/imgs路径(图片文件夹的名称可以任意,但不一定要叫imgs)。

  移动到你要清理未引用图片的上级目录(应该有a.md b.md.imgs/在此目录中)

  比如我这里有一个从Notion下载的Vue笔记,但是不小心加了很多其他没用的图片进去,现在想删除。

  只有一个Vue-conception . MD和一个文件夹vuedir,里面有图片。

  使用

  python $ app _ home/img-cleaner . py #原谅我写的这么蠢。这里会提示您输入放置图片的文件夹的名称:

  然后按回车。

  未引用的图片将被移动到。/_垃圾桶目录。

  注意每行点最多包含一个图片标签![](),因为没有关闭常规贪婪匹配,所以如果一行写多张图片,会报错。

  2022-6-2更新:引用图片的文件名可以有空格字符,代码会自动将Markdown中引用路径的文件名转码为空格字符,但文件名中只允许出现一个空格字符。源代码接收库

  #-*-编码:utf-8 -*-

  进口re

  导入技能

  导入操作系统

  #获取工作路径

  打印(请输入放图片的文件夹的名称:)

  Print(注意,如果路径包含特殊符号,需要用“\”进行转义

  _input=input()

  #创建替换回收站文件夹

  如果os.path.exists(。/replace)==False:

  os.mkdir(。/replace’)

  打印(“文件夹创建成功:替换”)

  否则:

  引发异常(“请删除当前目录中的替换文件夹,然后重试”)

  如果os.path.exists(./_trash_bin)==False:

  os.mkdir( ./_ trash _ bin’)

  打印(创建文件夹成功:_ trash _ bin’)

  否则:

  引发异常(请删除当前目录下的_垃圾桶_垃圾箱文件夹后重试)

  # 撰写正则表达式

  # pattern=re.compile(\(.*img\/.*\.*\))

  #模式=re。编译( \( _ input \/).*\.*\))

  pattern=re.compile(\!\[.*\]\( _input \/.*\))

  # 创建需要被移动的文件列表

  find_list=[]

  # 获取当前路径下的。钔文件

  md_finder=os.listdir( ./)

  md_list=[]

  对于md_finder中的项目:

  # 寻找减价文件

  if item.endswith(.MD’)==True:

  md_list.append(项目)

  # 逐个读取。钔文件

  对于md_list中的md_item:

  f=打开(md_item)

  md_str=f.read()

  f.close()

  result=pattern.findall(md_str)

  对于范围内的I(len(结果)):

  # 将图片路径逐个添加至查找列表

  索引=结果[我].查找(])

  # 将拿到的原始图片路径加工成/imgs_name /xxx.png的形式

  add_item= ./ _ input / result[I][index 3 len(_ input):len(result[I])-1]

  space_index=add_item.find( )

  # 如果路径中存在空格符

  if space_index!=-1:

  add _ item=add _ item[0:space _ index] add _ item[space _ index 3:]

  # 将图片路径添加至查找列表

  查找_列表.追加(添加项目)

  # 将所有减价中引用过路径的图片移动至。/替换

  对于查找列表中的项目:

  shutil.move(item, 1 ./replace’)

  打印(项目移动完成)

  打印(-)

  # 将没有引用的图片移至_垃圾桶_垃圾箱

  img _ trashs=os.listdir( ./ _input)

  trash_flag=0

  对于img _垃圾中的项目_垃圾桶:

  item_trash= ./ _input / item_trash

  垃圾桶标志=垃圾桶标志一

  shutil.move(item_trash,)./_ trash _ bin’)

  打印(item_trash in _trash_bin )

  打印(-)

  # 删除原本的图片文件夹,并更改文件夹名称

  os.removedirs( ./ _input /)

  os.rename( ./replace ,_input)

  print(str(trash_flag)个未引用)

  打印(移动成功!没有引用的图片已经移入至_ trash _ bin’)

  文章来源:https://www。cnblogs。com/hhsk/p/16338692。超文本标记语言

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: