You need to enable JavaScript to run this app. 如何将Python extention_finder函数的后缀应用到压缩包过滤代码中
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python extention_finder函数的后缀应用到压缩包过滤代码中

修改实现说明

你可以通过以下两种方式实现需求,优先推荐复用现有函数的方案:

方案1:复用已有的extention_finder函数

首先先修正原extention_finder函数的两处逻辑缺陷:一是函数没有添加return语句,调用后无法正常获取返回的后缀结果;二是zip后缀的判断条件使用了小写.zip,和其余后缀的大写判断逻辑不一致,会导致无法匹配大写格式的.ZIP后缀。修正后直接调用该函数判断当前文件是否为支持的格式即可,修改后的完整代码如下:

def extention_finder(file_path):
    if ".XLSX" in file_path.upper():
        ext = ".xlsx"
    elif ".XLS" in file_path.upper():
        ext = ".xls"
    elif ".TXT" in file_path.upper():
        ext = ".txt"
    elif ".CSV" in file_path.upper():
        ext = ".csv"
    elif ".XLT" in file_path.upper():
        ext = ".xlt"
    elif ".ZIP" in file_path.upper(): # 修复原逻辑大小写不兼容的问题
        ext = ".zip"    
    else:
        ext = "N/A"
    return ext # 补上return语句才能正常获取返回值

counts = 1
myZip = zipfile.ZipFile(path_to_zip_file)
print(myZip.namelist())

for file in myZip.filelist:
    # 替换原HERE行的逻辑,判断当前文件属于支持的后缀格式
    if extention_finder(file.filename) != "N/A":
        if os.path.basename(file.filename) in os.listdir(directory_to_extract_to):
            source = myZip.open(file)
            target = open(os.path.join(directory_to_extract_to, os.path.basename(file.filename).split(".")[0] + "_" + str(counts) + "." + os.path.basename(file.filename).split(".")[1]), "wb")
            counts = counts + 1 
            # 可选优化:补充with逻辑关闭文件,避免资源泄露
            with source, target:
                shutil.copyfileobj(source, target)
        else:
            source = myZip.open(file)
            target = open(os.path.join(directory_to_extract_to, os.path.basename(file.filename)), "wb")
            with source, target:
                shutil.copyfileobj(source, target)

方案2:直接匹配所有支持后缀(无需调用函数)

如果你不需要复用extention_finder函数,也可以直接把所有支持的后缀整理为元组,传入endswith方法实现匹配,同时做大小写兼容处理,仅需要替换HERE所在行即可:

# 仅替换原HERE所在行即可
if file.filename.lower().endswith(('.xlsx', '.xls', '.txt', '.csv', '.xlt', '.zip')):

内容的提问来源于stack exchange,提问作者Muratcan Çoban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 03:57:03