Python的try-catch被阻断,导致程序不能跳过异常继续执行,如何解决?

我的目的是对读取来的文件进行批量处理

其中,提前预知到了存在ValueError和TypeError,所以我使用异常捕获防止阻断,同时得到原因

可是最终Traceback了我的问题在显示器上,却也阻断了我的文件读取

这是哪些地方出了矛盾呢?

以前读取的时候也存在过这个问题,当时调换了try的位置就好了,这次仍然出现了这个问题

所以想彻底解决这个问题,不是很理解,请求赐教!

if __name__ == '__main__':
    # 一.读取文件
    os.chdir(r'E:\Project\实测\批量测试')
    HaveClear = text_read('HaveClear.txt')
    FileEmpty, RunOut, ValueError, TypeError, ValueReason, TypeReason = [], [], [], [], [], []
    count = 0
    for filename in os.listdir(f'标准文件(原始)'):
        count += 1
    
        # 判断该文件是否读取过
        if filename in HaveClear:
            continue
        # 追加上次的数据
        text_save([filename], 'HaveClear.txt', 'a')
        # 读取标准文件
        df = pd.read_csv(f'标准文件(原始)/{filename}', encoding='utf=8', )
        # 二.清洗文件
        # print(df)
        if (df.shape)[0] > 2:
            # 如果 价格得分and排名and总分都为空就删除行
            try:
                df = Del_rows(df)
                # 修改排名中的问题数据
                df = Adapt_Rank(df)
                if df.shape[0] <= 2:
                    # 行数不达标
                    FileEmpty.append(filename)
                    print(f'{count}.{filename}:文件没有数据')

                # 标记文件行数,如果FileNone直接记录
                # lines=3:行数正常
                lines = 3
                # 标记有排名和得分是否超规
                if Remark(df):
                    # 超规格
                    RunOut.append(filename)
                    print(f'{count}.{filename}:超规格')
            except TypeError as t:
                TypeError.append(filename)
                TypeReason.append(t)
                print(f'{count}.{filename}:', t)
            except ValueError as v:
                ValueError.append(filename)
                ValueReason.append(v)
                print(f'{count}.{filename}:', v)

            # 处理商务技术两列
            df = Business_technology(df)
            # 填充商务、技术、价格的比重三列
            df = Full_ThreeCols(df)
            # 填充(向前替代-1和空值)包组
            df = Full_PackGroup(df)
        else:
            lines = 0
        # 三.保存文件
        if lines == 3:
            # 文件正常
            df.to_csv(f'清理完成/{filename}', index=None)
            if count % 100 == 0:
                print(f'{count}.{filename}:保存完毕.....')
        elif lines == 0:
            # 行数不达标
            FileEmpty.append(filename)
            print(f'{count}.{filename}:文件没有数据')

没看出啥问题 , 一般输出 错误代码, 都做个repr转换

except TypeError as t:
                TypeError.append(filename)
                TypeReason.append(repr(t))
                print(f'{count}.{filename}:', repr(t))
            except ValueError as v:
                ValueError.append(filename)
                ValueReason.append(repr(v))
                print(f'{count}.{filename}:', repr(v))

从 except 部分的代码, 没看出问题,除了没做转字符串的操作, 建议在循环体的开始和结束,都加上日志打印, 看看循环停留在什么地方, 或者什么地方开始出现中断。

意思是之前的错误, 是因为发生未捕获的异常?
可以这么考虑

except Exception as e:
       error_info = repr(t)
       # 按 error_info  的关键字(ValueError, TypeError, KeyError),分别记录 对应的列表