如何使用config.ini配置替代Python代码中硬编码的附件文件夹路径
问题排查与修复方案
核心错误原因
- 直接对
config['files']['folder_path']做循环迭代:该配置项是文件夹路径字符串,迭代字符串只会拿到单个字符,并不会返回目录下的文件列表,必须调用os.listdir()传入配置路径才能获取目标目录下的文件名。 - 用
+拼接路径存在兼容性风险:不同操作系统的路径分隔符不一致,且如果配置的路径末尾没有带分隔符会直接拼接成非法路径,必须用os.path.join()处理路径拼接。
前置配置确认
先确认你的config.ini中已经新增对应配置段,示例如下:
[files] folder_path = ./attachments
修正后代码
# 从配置文件读取文件夹路径 folder_path = config['files']['folder_path'] # 遍历目标目录下的所有文件 for fileName in os.listdir(folder_path): # 用os.path.join生成合法跨平台路径 hot_file_path = os.path.join(folder_path, fileName) # 原有CSV读取逻辑保持不变 with open(hot_file_path, "r") as csv_file: hot_file = csv.reader(csv_file, delimiter=',')
可选优化
如果需要过滤非CSV文件、避免读取子目录,可以增加后缀判断逻辑:
for fileName in os.listdir(folder_path): # 仅处理后缀为.csv的文件,忽略大小写 if fileName.lower().endswith('.csv'): hot_file_path = os.path.join(folder_path, fileName) # 后续读取逻辑
内容的提问来源于stack exchange,提问作者user16394167
相关产品推荐
相关产品推荐

