字符串拼接时的转义字符问题:读取CSV报FileNotFoundError
FileNotFoundError 排查与修复方案
核心问题根因
你当前遇到的报错,最直接的来源是手动拼接路径时缺失目录与文件名之间的分隔符。
原代码的路径拼接逻辑为:
Read_this_file = "\\folder1\folder2"+max(filename_list)
基础路径字符串"\\folder1\folder2"的末尾没有携带Windows路径必需的反斜杠分隔符,直接拼接文件名后会生成完全无效的路径,举个实际拼接效果:
base_path = r"\\folder1\folder2" target_name = "sales_202406.csv" wrong_path = base_path + target_name # 实际拼出的错误路径:\\folder1\folder2sales_202406.csv # 正确路径应为:\\folder1\folder2\sales_202406.csv
你提到给字符串加r(原始字符串)前缀也没有解决问题,本质是r前缀仅会关闭字符串内的转义解析(比如让\t不被识别为制表符),并不能自动补全路径所需的分隔符,因此无法解决拼接逻辑本身的缺陷。
标准解决方法
- 放弃手动拼接路径字符串,直接使用Python标准库的
os.path.join方法组合目录与文件名,该方法会自动适配操作系统补全对应分隔符,彻底避免拼接粘黏的问题。在你原有代码基础上仅修改路径拼接逻辑即可:import os import pandas Files_in_folder = os.listdir(r"\\folder1\folder2") Filename_list = [] for filename in Files_in_folder: if "sometext" in filename: Filename_list.append(filename) # 自动补充分隔符生成完整有效路径 Read_this_file = os.path.join(r"\\folder1\folder2", max(Filename_list)) Data = pandas.read_csv(Read_this_file,sep=',')
辅助排查技巧
- 拼接完目标路径后,先通过
print(Read_this_file)打印实际生成的路径值,将其复制到系统资源管理器的地址栏中,验证是否能正常打开对应文件,如果无法打开,逐段对比打印路径与实际文件的真实路径差异。 - 检查文件名中是否存在首尾不可见的空格、换行等特殊字符,这类字符会导致匹配的文件名和实际文件名产生差异,可通过
filename.strip()对筛选出的文件名做首尾空白清理后再存入列表。 - 确认目标文件的读取权限:虽然
os.listdir可以正常列出目录下的文件,但如果具体目标文件没有读取权限,部分场景下也会抛出FileNotFoundError而非专属的权限报错。
内容的提问来源于stack exchange,提问作者statistical_student
相关产品推荐
相关产品推荐

