如何在指定目录下查找文件名包含指定4位数字pin的csv文件
代码实现方案
原代码存在的问题
- 误用
os.path模块直接作为函数调用,正确的路径拼接应该使用os.path.join()方法,避免手动拼接路径出现分隔符错误 - 若
upload_pin为整数类型,直接判断是否存在于字符串类型的文件名中会触发类型错误,需要先转换为字符串格式 - 手动拼接路径
path + '/*.csv'的写法兼容性差,不同操作系统的路径分隔符存在差异
修复后的实现代码
版本1:遍历所有CSV文件匹配(逻辑清晰易修改)
import glob import os # 你的pin变量,可根据实际情况赋值 upload_pin = 3069 path = r"\\OPCITSNAPADCON2.jnj.com\tm1\cons\grm_aspac\user_in\Manual Upload Current Plan\Archive" # 拼接路径获取路径下所有CSV文件 csv_search_pattern = os.path.join(path, "*.csv") all_csv_files = glob.glob(csv_search_pattern) # 将pin转为字符串避免类型错误 target_pin_str = str(upload_pin) matched_files = [] for file_path in all_csv_files: # 若不需要匹配路径中碰巧出现的对应数字,只判断文件名可以放开下面两行注释 # file_name = os.path.basename(file_path) # if target_pin_str in file_name: if target_pin_str in file_path: matched_files.append(file_path) print(file_path) # 可选:判断是否存在匹配的文件 if matched_files: print(f"找到{len(matched_files)}个包含pin{target_pin_str}的CSV文件") else: print(f"未找到包含pin{target_pin_str}的CSV文件")
版本2:直接用glob规则匹配(更简洁高效)
不需要遍历所有CSV文件,直接在搜索规则中加入pin的匹配规则,性能更高:
import glob import os upload_pin = 3069 path = r"\\OPCITSNAPADCON2.jnj.com\tm1\cons\grm_aspac\user_in\Manual Upload Current Plan\Archive" # 直接构造带pin的匹配规则 csv_search_pattern = os.path.join(path, f"*{upload_pin}*.csv") matched_files = glob.glob(csv_search_pattern) for f in matched_files: print(f)
内容的提问来源于stack exchange,提问作者user17240949
相关产品推荐
相关产品推荐

