如何编写仅跳过单条出错代码行的try/except异常捕获块
实现方案
你现有代码的问题是将所有os.mkdir()操作放在同一个try代码块中,只要某一步抛出异常,就会直接跳出整个try块执行pass,后续的目录创建操作全部不会运行。要实现跳过出错行继续执行的效果,需要给每个独立的目录创建操作单独配置异常捕获逻辑。
方式1:为每个mkdir操作单独套try/except块
适合目录数量少、命名无统一规律的场景:
import os try: os.mkdir('dir1') except: pass try: os.mkdir('dir2') except: pass try: os.mkdir('dir3') except: pass try: os.mkdir('dir4') except: pass try: os.mkdir('dir5') except: pass
方式2:遍历目录列表批量处理(更推荐)
把所有需要创建的目录名存入列表,循环遍历每个目录时单独做异常捕获,代码简洁易维护,适配批量创建场景:
import os # 把所有要创建的目录名放在列表里,后续新增目录只需修改这个列表即可 dir_list = ['dir1', 'dir2', 'dir3', 'dir4', 'dir5'] for dir_name in dir_list: try: os.mkdir(dir_name) except: # 需要打印报错信息可以放开下方注释 # print(f"创建目录{dir_name}失败") pass
优化建议
建议不要使用裸except语句,最好明确指定需要捕获的异常类型:os.mkdir()在目标目录已存在时会抛出FileExistsError,仅捕获该异常可以避免吞掉权限不足、路径非法等其他异常,方便问题排查:
for dir_name in dir_list: try: os.mkdir(dir_name) except FileExistsError: # 仅跳过目录已存在的情况,其他异常会正常抛出 pass
内容的提问来源于stack exchange,提问作者BloodLord
相关产品推荐
相关产品推荐

