Python中用max结合for循环遇空目录时跳转至下一次迭代的需求
问题解决思路
先给你点破原代码里的几个坑:
- 你写的
len(["csv_file_list"])根本不是判断目录有没有文件——这是创建了一个只包含字符串"csv_file_list"的列表,长度永远是1,所以空目录时还是会执行不带default参数的max(),直接触发报错。 - 你已经调用过一次带
default=None的max()了,没必要重复调用,纯纯冗余操作。
要实现空目录时直接跳去处理下一个交易所,用continue语句就行,它会让循环直接跳到下一次迭代。修正后的代码如下:
import glob, os import datetime import shutil exchanges = ["bats","nyse"] # 原代码引号不匹配,已修正 for ex in exchanges: csv_file_list = glob.glob(f"H:\\SQL_EXPORTS\\eod\\candles\\{ex}\\*.csv") # 一次获取最新文件,空目录时返回None latest_file = max(csv_file_list, key=os.path.getctime, default=None) if latest_file is None: # 无文件时直接跳过当前循环,处理下一个交易所 continue # 有文件时执行后续逻辑 path = f'H:\\SQL_EXPORTS\\eod\\candles\\{ex}\\' fileBaseName = os.path.basename(latest_file).split('.')[0] # 这里可以添加你后续需要执行的操作,比如文件复制、数据处理等
关键修改点
- 修正了
exchanges列表的引号不匹配问题(原代码是["bats","nyse'],改为["bats","nyse"]) - 删除了重复的
os导入和冗余的max()调用 - 用
continue替代打印语句,直接跳过空目录的循环迭代 - 简化判断逻辑,直接通过
latest_file是否为None来判断目录是否为空
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

