【问题标题】:why does using "\" shows error in jython为什么在 jython 中使用“\”会显示错误
【发布时间】:2010-06-20 23:59:10
【问题描述】:

我正在尝试对 Windows 使用复制命令,并且我们有诸如 c:\oracle 之类的目录。

在尝试执行此类操作时,我们收到以下错误:

source_file=folder+"\"
                          ^
SyntaxError: Lexical error at line 17, column 23.  Encountered: "\r" (13), after : ""

这里的文件夹是我的 c:\oracle 路径,同时尝试向其中添加文件,例如:

source=folder+"\"+src_file

我不能这样做。有关如何解决此问题的任何建议?

我尝试使用/,但我在os.command 中的复制窗口调用源得到"the syntax is incorrect",解决它的唯一方法是使用\,但这样做时出现上述错误。

请提出建议。感谢您的帮助

谢谢。

【问题讨论】:

    标签: jython


    【解决方案1】:

    简答:

    你需要:

    source_file = folder + "\\" + src_file
    

    长答案:

    问题

    source_file = folder + "\" + src_file
    

    \ 是转义字符。它在这种特殊情况下所做的是转义 " 以便将其视为字符串的字符而不是字符串终止符,类似于:

    source_file = folder + "X + src_file
    

    会有同样的问题。

    换句话说,您正在尝试构造一个由"、一些其他文本和行尾(\r,回车符)组成的字符串。这就是您的错误的来源:

    Encountered: "\r" (13)
    

    【讨论】:

      【解决方案2】:

      Paxdiablo 关于为什么 \ 不适合你是绝对正确的。但是,您也可以通过使用 os.path.normpath 来解决您的问题,而不是尝试自己构建适当的特定于平台的路径字符。

      【讨论】:

        【解决方案3】:

        在我所知道的所有编程语言中,你不能在这样的字符串中加上引号:"this is a quote: "." 这样做的原因是第一个引号打开字符串,第二个引号然后关闭它(!),并且然后第三个打开另一个字符串 - 有以下两个问题:

        • 引号 #2 和 #3 之间的内容可能不是有效代码;
        • 报价 #3 可能没有关闭。

        解决这个问题有两种常见的机制:加倍和转义。转义更为常见,这意味着您将一个特殊字符(通常是\)放在您不希望以其通常值解释的字符前面。因此,"no, *this* is a quote: \"." 是一个正确的字符串,其中引号 #2 没有关闭字符串 - 并且字符 \ 没有出现。

        但是,现在您遇到了另一个问题 - 您实际上如何使转义字符出现在字符串中?很简单:逃避它! "This is an escape: \\!" 是你的做法:反斜杠 #1 是转义字符,反斜杠 #2 是转义符:它不会按照通常的转义语义解释,而是作为一个简单的反斜杠字符。

        因此,您的行应该这样写:

        source=folder+"\\"+src_file
        

        顺便说一句:为@paxdiablo(在我的诽谤之前加入)和@Nick(他有适当的 Pythonic 方式来做你想做的事)投赞成票

        【讨论】:

          猜你喜欢
          • 2019-01-05
          • 2010-10-08
          • 2017-11-20
          • 1970-01-01
          • 2021-03-16
          • 1970-01-01
          • 1970-01-01
          • 2020-11-29
          • 1970-01-01
          相关资源
          最近更新 更多