赞
踩
typora是一款非常好用的文本编辑软件,拿来写代码或者记笔记非常不错。他的目录结构我很喜欢,比国产的软件好用多了。
但是他有个问题我不得不吐槽,没有多端同步很不好用,想在别的地方看下笔记很不方便,而且分享需要导出也很麻烦。然后还有一个问题,今天我解决了。就是删除文本,图片不一起删除的问题。
本示例使用python实现
import os import re import shutil import win32api list_img1 = [] # 全部图片名称 list_img2 = [] # 使用的图片名称 list_img3 = [] # 不用的图片名称 path_file = 'D:\APPFILE\\typora' # 图片和文本的目录 path_file_back = 'D:\APPFILE\备份' # 图片和文本的目录 img_name = "图片" # 保存图片的目录名 pattern0 = r'图片/(\w+.*\.png)' pattern1 = r'图片/(\w+.*\.jpg)' pattern2 = r'图片/(\w+.*\.gif)' pattern3 = r'图片/(\w+.*\.webp)' pattern4 = r'图片/(\w+.*\.jpeg)' pattern5 = r'图片\\(\w+.*\.png)' pattern6 = r'图片\\(\w+.*\.jpg)' pattern7 = r'图片\\(\w+.*\.gif)' pattern8 = r'图片\\(\w+.*\.webp)' pattern9 = r'图片\\(\w+.*\.jpeg)' # 找出所有图片 def get_img(directory): global list_img1 # 获取目录下的所有文件和子目录 files = os.listdir(directory) for file in files: if file == img_name: filee = os.listdir(os.path.join(directory, file)) for i in filee: list_img1.append(i) # 如果是子目录,则递归遍历 if os.path.isdir(os.path.join(directory, file)): get_img(os.path.join(directory, file)) # 找出所有正在使用的图片 def get_file(directory): global list_img2 # 获取目录下的所有文件和子目录 files = os.listdir(directory) for file in files: # 如果是子目录,则递归遍历 if os.path.isdir(os.path.join(directory, file)) and file != img_name: get_file(os.path.join(directory, file)) # 如果是文件,则输出文件名 elif os.path.isfile(os.path.join(directory, file)): fil = open(os.path.join(directory, file), 'r', encoding='utf-8') text = fil.read() results0 = re.findall(pattern0, text) results1 = re.findall(pattern1, text) results2 = re.findall(pattern2, text) results3 = re.findall(pattern3, text) results4 = re.findall(pattern4, text) results5 = re.findall(pattern5, text) results6 = re.findall(pattern6, text) results7 = re.findall(pattern7, text) results8 = re.findall(pattern8, text) results9 = re.findall(pattern9, text) for i in results0: list_img2.append(i) for i in results1: list_img2.append(i) for i in results2: list_img2.append(i) for i in results3: list_img2.append(i) for i in results4: list_img2.append(i) for i in results5: list_img2.append(i) for i in results6: list_img2.append(i) for i in results7: list_img2.append(i) for i in results8: list_img2.append(i) for i in results9: list_img2.append(i) # 找出不用的图片 def lack_img(): global list_img3 list_img3 = set(list_img1) - set(list_img2) # 删除不用的图片 def rm_img(directory): # 获取目录下的所有文件和子目录 files = os.listdir(directory) for file in files: if file == img_name: filee = os.listdir(os.path.join(directory, file)) set1 = set(filee) set2 = set(list_img3) intersection = set1.intersection(set2) for i in intersection: try : shutil.move(os.path.join(directory, '图片', i), path_file_back) except Exception as e: print(str(e)+'e') # 如果是子目录,则递归遍历 if os.path.isdir(os.path.join(directory, file)): rm_img(os.path.join(directory, file)) get_img(path_file) get_file(path_file) lack_img() rm_img(path_file) print("所有图片数量:", len(list_img1)) print("文本使用图片数量:",len(list_img2)) print("不使用图片数量:",len(list_img3))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。