如何检查指定目录中含任意扩展名的目标文件并获取完整路径
解决方案
原代码存在的问题
- Python变量名不能包含减号,
Folder-Name是非法命名,需改为Folder_Name os.path模块不存在Folder-Name方法,原代码的文件检查逻辑完全错误- Python标准库中没有
os.touch方法,创建空文件需要使用标准文件操作方式 - 格式化字符串语法错误,正确写法是
%s而非s%
最优实现代码
import os # 修正变量名(Python不允许变量名包含减号) File_Name = "Invoice_Dmart" Folder_Name = r"c:\Documents\Scripts\Bills" # 存储匹配到的文件完整路径 matched_file_paths = [] # 遍历目标目录下的所有条目 for entry in os.listdir(Folder_Name): entry_full_path = os.path.join(Folder_Name, entry) # 仅处理文件(排除子目录) if os.path.isfile(entry_full_path): # 提取文件名(不含扩展名) filename_without_ext = os.path.splitext(entry)[0] # 匹配目标文件名(如需不区分大小写,可添加.lower()) if filename_without_ext == File_Name: matched_file_paths.append(entry_full_path) # 处理结果 if matched_file_paths: print(f"找到匹配文件:{matched_file_paths}") # 若仅需第一个匹配文件的路径,直接取列表首个元素 target_file_path = matched_file_paths[0] else: print(f"未找到文件名(不含扩展名)为{File_Name}的文件") # 如需创建空文件,可执行以下代码(可选) # new_file_path = os.path.join(Folder_Name, f"{File_Name}.txt") # with open(new_file_path, 'w') as f: # pass # print(f"已创建空文件:{new_file_path}")
代码说明
- 用
os.listdir遍历目标目录,os.path.isfile确保只处理文件而非子目录 os.path.splitext用于分离文件名与扩展名,提取无扩展名的部分进行匹配- 收集所有匹配的文件路径,若仅需首个匹配项,直接取列表第一个元素即可
- 创建空文件采用Python标准的
with open写法,避免资源泄漏
内容的提问来源于stack exchange,提问作者Manz
相关产品推荐
相关产品推荐

