使用布尔值检测目录下多个CSV文件是否存在时代码运行异常
核心错误点
代码逻辑不生效是三个明确问题导致的:
- 返回值类型不匹配:
is_file_exist()返回的是由3个布尔值组成的元组,直接和布尔值True做相等判断永远不会成立,后续分支永远不会触发。 - 路径处理错误:直接用字符串
+拼接目录和文件名,若目录路径末尾没有路径分隔符,会生成类似/tmpfile1.csv的错误路径;且dir变量没有作为参数传入函数,依赖全局变量极易出现作用域取值异常。 - 检测逻辑不严谨:
os.path.exists()会将同名目录判定为存在,无法确认目标路径是你需要的文件。
修复代码
直接替换为如下实现即可:
import os def is_file_exist(target_dir: str) -> bool: file_list = ('file1.csv', 'file2.csv', 'file3.csv') return all(os.path.isfile(os.path.join(target_dir, f)) for f in file_list) # 调用时传入目标文件所在的实际目录绝对路径,避免相对路径歧义 if is_file_exist("/your/actual/directory/path"): print('Do Something')
修复点说明:
- 把检测目录作为参数传入函数,消除全局变量依赖
- 用
os.path.join()做路径拼接,自动适配不同操作系统的路径分隔符,避免手动拼接的格式错误 - 用
os.path.isfile()做检测,仅当路径指向普通文件时才判定为存在 - 用
all()聚合三个检测结果,只有三个文件全部存在时才返回True,匹配分支判断逻辑
额外排查建议
如果替换后仍检测失败,先打印os.path.join(target_dir, f)生成的完整路径,和实际文件路径做比对:
- 检查是否存在多余空格、文件名大小写不匹配的问题(Linux/macOS默认区分文件名大小写)
- 尽量传绝对路径做检测,避免相对路径受程序启动工作目录影响导致路径偏移
内容的提问来源于stack exchange,提问作者AKS
相关产品推荐
相关产品推荐

