2023-10-26 08:28:50
在Python中,若需判断文件是否存在并忽略大小写,可通过遍历目录中的文件列表并统一转换为小写或大写进行比较来实现。
由于os.path.isfile()和os.path.exists()在Windows系统中默认不区分大小写(依赖文件系统特性),而在Linux/macOS中区分大小写,因此跨平台兼容的解决方案需主动处理大小写问题。以下是具体实现方法:
方法1:遍历目录并比较文件名(跨平台)import osdef file_exists_ignore_case(directory, filename): """ 检查指定目录下是否存在忽略大小写的文件名 :param directory: 目录路径 :param filename: 要检查的文件名(带扩展名) :return: 存在返回True,否则返回False """ filename_lower = filename.lower() for file in os.listdir(directory): if file.lower() == filename_lower: return True return False# 示例用法directory = "./" # 当前目录filename = "HELLO.PY"exists = file_exists_ignore_case(directory, filename)print(exists) # 若存在hello.py或HELLO.py等变体,返回True步骤说明:
若已知文件可能的大小写变体,可直接生成所有变体并检查:
import osdef file_exists_case_insensitive(filepath): """ 检查文件是否存在(忽略路径中的大小写) :param filepath: 完整文件路径 :return: 存在返回True,否则返回False """ if os.path.exists(filepath): return True # 分割目录和文件名 dir_path = os.path.dirname(filepath) filename = os.path.basename(filepath) # 遍历目录中的文件 try: for file in os.listdir(dir_path): if file.lower() == filename.lower(): return True except FileNotFoundError: pass # 目录不存在 return False# 示例用法filepath = "./HELLO.PY"exists = file_exists_case_insensitive(filepath)print(exists) # 若存在hello.py等变体,返回True步骤说明:
优势: