Sanmu_mumu 2021-12-19 22:27 采纳率: 83.3%
浏览 99

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}:文件没有数据')

  • 写回答

3条回答 默认 最新

  • 陈年椰子 2021-12-19 22:34
    关注

    没看出啥问题 , 一般输出 错误代码, 都做个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))
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月19日

悬赏问题

  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。
  • ¥15 把VMware项目复制到另一台电脑
  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密