如何无需指定文件扩展名即可删除目标文件?
解决方案:无需指定扩展名删除对应ID的文件
嘿,我明白你的需求了——你有一批和MongoDB文档ID同名的文件(不管是原始PDF还是转换后的TXT),现在想直接根据ID删除这些文件,不用手动写扩展名对吧?
这里有两种靠谱的方法可以实现:
方法1:用glob快速匹配(简洁版)
glob模块可以帮你快速匹配符合规则的文件名,一行就能找出所有以目标ID开头的文件:
import glob import os # 拼接出文件前缀(上传文件夹 + 文档ID) file_prefix = os.path.join(app.config['UPLOAD_FOLDER'], str(document["_id"])) # 匹配所有以该前缀开头、任意扩展名的文件 matching_files = glob.glob(f"{file_prefix}.*") # 遍历删除所有匹配到的文件 for file_path in matching_files: os.remove(file_path)
这个方法的好处是代码简洁,适合你确定没有ID_额外字符.xxx这类相似文件名的场景。
方法2:遍历文件夹精准匹配(严谨版)
如果担心误删类似ID_temp.txt这种带后缀的文件,可以用os.listdir遍历文件夹,精准匹配文件名(不含扩展名)和文档ID:
import os upload_folder = app.config['UPLOAD_FOLDER'] target_id = str(document["_id"]) # 遍历上传文件夹里的所有文件 for filename in os.listdir(upload_folder): # 分离文件名和扩展名 file_name_without_ext, _ = os.path.splitext(filename) # 检查文件名是否完全等于目标ID if file_name_without_ext == target_id: file_path = os.path.join(upload_folder, filename) os.remove(file_path)
这种方法更严谨,只会删除文件名完全匹配文档ID的文件,不会出现误删情况。
你可以根据自己的实际场景选其中一种,两种都能实现你“无需指定扩展名删除文件”的需求~
内容的提问来源于stack exchange,提问作者Chema Rocha
相关产品推荐
相关产品推荐

