为什么Windows系统下pd.read_csv的文件路径内无法使用变量?
报错与高亮异常的根源
你遇到的两个问题本质是同一个原因:Windows默认的路径分隔符\是Python的字符串转义字符,触发了语法错误:
- 你写的路径字符串末尾为
14mm\'+test_var,这里的\'会被Python识别为「转义单引号」,表示该单引号是字符串的内容,而非字符串的结束标记。Python扫描到行尾都找不到闭合的单引号,就会抛出EOL while scanning string literal报错。 - 编辑器的语法高亮逻辑和Python语法规则一致,识别到前面的字符串没有正常闭合,就会把本该是变量的
test_var也判定为字符串内容显示为绿色,直到遇到.csv前的单引号才判定字符串结束,因此只有.csv显示为黑色。
之前的尝试无效的原因
- 给路径加
r前缀(原始字符串)没有用:Python的原始字符串语法规则明确禁止末尾单独放反斜杠,加r后你写的r'...14mm\''还是会被判定为未闭合的字符串,报错不变。 - 加
'rb'参数没有用:pandas.read_csv默认读取文本格式的csv文件,rb是二进制读取模式,传入后会拿到字节对象无法解析csv内容,属于参数误用。
可行解决方案
方案1:替换所有反斜杠为正斜杠
Python在Windows环境下完全兼容正斜杠作为路径分隔符,不会触发转义问题,修改最简单:
prelim = pd.read_csv('C:/Users/Edwardtx/Downloads/Tomsstuff/data_pp_kvals/test2/Inner/14mm/'+test_var+'.csv')
方案2:转义所有反斜杠
把路径中所有\写成\\,明确表示这是路径分隔符而非转义字符:
prelim = pd.read_csv('C:\\Users\\Edwardtx\\Downloads\\Tomsstuff\\data_pp_kvals\\test2\\Inner\\14mm\\'+test_var+'.csv')
方案3(更推荐):用路径拼接工具实现跨平台兼容
用Python标准库的pathlib拼接路径,完全不用考虑不同系统的路径分隔符差异,写法更简洁不易出错:
from pathlib import Path import pandas as pd needle_size = '14mm_' Pressure = '5mb' test_var = needle_size + Pressure base_path = Path(r'C:\Users\Edwardtx\Downloads\Tomsstuff\data_pp_kvals\test2\Inner\14mm') prelim = pd.read_csv(base_path / f"{test_var}.csv")
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

