You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python中如何让os.path.exists忽略大小写检查路径是否存在?

实现忽略大小写的路径存在检查

我明白你遇到的问题——有时候文件名的大小写乱七八糟,直接用os.path.exists()会因为大小写不匹配返回False,挺烦人的。因为Python的os.path.exists()本身不支持忽略大小写的检查,所以我们需要自己实现一个对应的函数来处理这个需求。

第一步:编写忽略大小写的存在检查函数

这个函数的核心思路是:拆分目标路径的目录和文件名,遍历目录下的所有条目,将每个条目名和目标文件名统一转成小写(或大写)进行比较,只要有匹配的就说明路径存在。

import os

def case_insensitive_exists(target_path):
    # 拆分路径的目录部分和文件名部分
    dir_path, filename = os.path.split(target_path)
    
    # 如果目标路径本身是目录(无文件名),直接检查目录是否存在
    if not filename:
        return os.path.exists(dir_path)
    # 如果目录本身不存在,直接返回False
    if not os.path.isdir(dir_path):
        return False
    
    # 遍历目录下的所有条目,统一大小写后比较
    for entry in os.listdir(dir_path):
        if entry.lower() == filename.lower():
            return True
    return False

第二步:修改你的原有代码

把原来的os.path.exists()替换成我们刚写的case_insensitive_exists()函数,同时建议用os.path.join()来拼接路径(比手动加\更跨平台,避免路径分隔符的兼容性问题)。修改后的代码如下:

import os

# 先定义上面的case_insensitive_exists函数

INI_NAME = (cfgname.split("_", 1)[1]) + ".ini"
# 用os.path.join规范拼接路径
newpath = os.path.join(newpath, cfgname)
if case_insensitive_exists(newpath):
    INI_path = os.path.join(self.ECUFolderpath, INI_NAME)
    if case_insensitive_exists(INI_path):
        print("文件存在")  # 替换你原来的print(exist),建议写明确的提示信息

补充说明

  • 这个函数跨平台兼容:不管是Windows(本身大小写不敏感)还是Linux/macOS(大小写敏感),都能正确忽略大小写检查路径是否存在。
  • 支持目录检查:如果目标路径是一个目录,函数也能正确判断该目录是否存在(忽略目录名的大小写)。

内容的提问来源于stack exchange,提问作者jack

火山引擎 最新活动