【问题标题】:ValueError: invalid \x escape:ValueError: 无效 \x 转义:
【发布时间】:2012-05-11 23:10:28
【问题描述】:
ValueError: invalid \x escape:
  File "SConstruct", line 49:
    execfile("hosts.cfg")

我完全被这个家伙难住了......

如果我在第 49 行之前打印,我可以看到输出。在“hosts.cfg”的第一行,我放了第二条永远不会执行的打印语句。

【问题讨论】:

  • hosts.cfg 中有什么?
  • 当你像python hosts.cfg一样运行它会发生什么?
  • IOError: [Errno 2] 没有这样的文件或目录:'python hosts.py':
  • hosts.py 来自哪里?我以为我们在谈论hosts.cfg
  • 不,我的意思是从命令行实际运行它。忘记SConstruct文件:直接运行“python hosts.py”看看会发生什么。

标签: python scons


【解决方案1】:

即使在 Windows 上,正斜杠也应该适用于目录名称,因此您可以对其进行标准化:

"libpath" : [".", "../xlib", "../tools", "../info"],

或者使用原始字符串,正如@Adam Rosenfield 在评论中所说:

"libpath" : [r".", r"..\xlib", r"..\tools", r"..\info"],

我认为上述两种解决方案都比将所有反斜杠加倍更好,并且比仅对以“x”开头的目录名称加倍反斜杠加载更好。

【讨论】:

  • 不知道正斜杠路径是否适用于 Windows...您已经获得了解决此问题的方法,TY :D
【解决方案2】:
"libpath" : [".", "..\xlib", "..\tools", "..\info"],

这是 hosts.cfg 中的问题行,不知道为什么 Python 一直抱怨 execfile 行而不是我调用的文件中的行。

我改成:

\\xlib and it's working now.

【讨论】:

  • 您还可以通过在字符串文字前添加 r 前缀来使用原始字符串,例如[r".", r"..\xlib", r"..\tools", r"..\info"].
  • 是的,原始字符串,我需要经常记住这些。谢谢提醒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多