为什么使用“\”在jython中显示错误

时间:2010-06-20 23:59:11

标签: jython

我正在尝试使用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",解决问题的唯一方法是使用\但我得到了这样做会出现上述错误。

请建议。谢谢你的帮助

感谢。

3 个答案:

答案 0 :(得分:8)

简短回答:

你需要:

source_file = folder + "\\" + src_file

答案很长:

的问题
source_file = folder + "\" + src_file

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

source_file = folder + "X + src_file

会有同样的问题。

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

Encountered: "\r" (13)

答案 1 :(得分:3)

Paxdiablo对于为什么不能为你工作是完全正确的。但是,您也可以使用os.path.normpath解决问题,而不是尝试自己构建适当的特定于平台的路径字符。

答案 2 :(得分:1)

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

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

有两种常见的解决方法:加倍和逃避。转义是更常见的,它意味着你将一个特殊的字符(通常是\)放在你不想用它们的通常值解释的字符前面。因此,"no, *this* is a quote: \"."是一个正确的字符串,其中引号#2没有关闭字符串 - 并且字符\没有出现。

但是,现在您还有另一个问题 - 如何让转义字符出现在字符串中?简单:逃避吧! "This is an escape: \\!"就是这样做的:反斜杠#1是转义字符,反斜杠#2是转义符:它不会被解释为通常的转义语义,而是作为一个简单的反斜杠字符。

因此,你的专栏应该这样说:

source=folder+"\\"+src_file
BTW:为@paxdiablo(在我的dia骂之前进入)和@Nick(有一个适当的Pythonic方式做你想做的事情)的upvote