You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用eval解析文件路径时遭遇SyntaxError语法错误求助

解决eval解析文件路径时的SyntaxError问题

错误原因

你的代码报错是因为eval执行的字符串中,单个反斜杠\被当作转义字符,它会转义后续的单引号,导致字符串无法正确闭合,进而触发SyntaxError: unexpected character after line continuation character错误。

在Python中:

  • 单个\是转义符,用来表示特殊字符(比如换行符\n)
  • 要表示实际的反斜杠,需要用\\转义
  • 而当你把包含\\的字符串放在双引号包裹的url变量里时,\\会被解析成单个\,所以eval执行时拿到的是未正确转义的路径字符串,引发错误。

解决方案(基于eval的修改)

将url字符串中的每个\\替换为\\\\,这样eval解析时会得到正确的单个反斜杠:

url= " 'C:\\\\Users\\\\xxx\\\\Desktop\\\\_Revenue\\\\Input\\\\'  + str(yr) + '\\\\' + 'Survey' + YY + '_revenue.xlsx'"

def test(yr):
    YY = str(yr)[2:]
    survey_url = eval(url)
    # 可添加打印验证路径是否正确
    print(survey_url)

test(2015)

执行后,survey_url会生成正确的路径:C:\Users\xxx\Desktop\_Revenue\Input\2015\Survey15_revenue.xlsx

更安全的替代方案(不使用eval)

其实完全不需要用eval来拼接路径,直接在函数内用f-string或者字符串拼接更简洁安全,避免eval带来的潜在风险:

方法1:f-string拼接

def test(yr):
    YY = str(yr)[2:]
    # 使用普通字符串
    survey_url = f'C:\\Users\\xxx\\Desktop\\_Revenue\\Input\\{yr}\\Survey{YY}_revenue.xlsx'
    # 或者使用原始字符串(无需转义反斜杠)
    survey_url = rf'C:\Users\xxx\Desktop\_Revenue\Input\{yr}\Survey{YY}_revenue.xlsx'
    print(survey_url)

test(2015)

方法2:字符串拼接

def test(yr):
    YY = str(yr)[2:]
    base_path = 'C:\\Users\\xxx\\Desktop\\_Revenue\\Input\\'
    survey_url = base_path + str(yr) + '\\' + 'Survey' + YY + '_revenue.xlsx'
    print(survey_url)

test(2015)

内容的提问来源于stack exchange,提问作者123456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:36