我的目的是对读取来的文件进行批量处理
其中,提前预知到了存在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}:文件没有数据')