当前位置: 首页 > 面试题库 >

删除多个匹配模式的文件

谷梁昊空
2023-03-14
问题内容

我已经使用Python和Django建立了一个在线画廊。我刚刚开始添加编辑功能,从旋转开始。我使用sorl.thumbnail按需自动生成缩略图。

当我编辑原始文件时,我需要清理所有缩略图,以便生成新的缩略图。每个图片有三到四个(我在不同场合有不同的图片)。

可以 在文件变量中进行硬编码…但是这很混乱,如果我改变工作方式,则需要重新访问代码。

理想情况下,我想进行正则删除。用正则表达式来说,我所有的原件都这样命名:

^(?P<photo_id>\d+)\.jpg$

所以我想删除:

^(?P<photo_id>\d+)[^\d].*jpg$

(在我photo_id要清洁的ID替换的地方。)


问题答案:

尝试这样的事情:

import os, re

def purge(dir, pattern):
    for f in os.listdir(dir):
        if re.search(pattern, f):
            os.remove(os.path.join(dir, f))

然后,您将传递包含您要匹配的文件和模式的目录。



 类似资料:
  • 问题内容: 我有一个类似… 的正则表达式模式,我需要搜索成千上万个文件(大小从1KB到24 MB不等)以成千上万个文件(介于100到8000之间)。 我想知道是否有比我尝试过的模式匹配更快的方法。 环境: 杰克1.8 Windows 10 Unix4j库 这是我到目前为止尝试过的 我明白了,这让我觉得我做错了什么。 我对流使用了不同的方法,平均每种方法需要大约一分钟的时间来处理当前的6660个文件

  • 我读了很多帖子提到删除匹配模式的键。我想删除与特定模式不匹配的键。

  • 问题 你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。 解决方案 这个问题很典型的出现在当你用点(.)去匹配任意字符的时候,忘记了点(.)不能匹配换行符的事实。 比如,假设你想试着去匹配C语言分割的注释: >>> comment = re.compile(r'/\*(.*?)\*/') >>> text1 = '/* this is a comment */' >>> text

  • 通配符 # glob_asterisk.py import glob for name in sorted(glob.glob('dir/*')): print(name) # glob_subdir.py import glob print('Named explicitly:') for name in sorted(glob.glob('dir/subdir/*')):

  • 在每个模式中逐步执行此操作1。基本上是将一个大型HTML表单修改为我在列表中预先确定的值。任何关于我可能遇到的陷阱的想法或关于使用进行多模式匹配的建议。