我正在尝试使用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"
,解决问题的唯一方法是使用\
但我得到了这样做会出现上述错误。
请建议。谢谢你的帮助
感谢。
答案 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: "."
原因是第一个引号打开字符串,第二个引号然后关闭它(!) ,然后第三个打开另一个字符串 - 有以下两个问题:
有两种常见的解决方法:加倍和逃避。转义是更常见的,它意味着你将一个特殊的字符(通常是\
)放在你不想用它们的通常值解释的字符前面。因此,"no, *this* is a quote: \"."
是一个正确的字符串,其中引号#2没有关闭字符串 - 并且字符\
没有出现。
但是,现在您还有另一个问题 - 如何让转义字符出现在字符串中?简单:逃避吧! "This is an escape: \\!"
就是这样做的:反斜杠#1是转义字符,反斜杠#2是转义符:它不会被解释为通常的转义语义,而是作为一个简单的反斜杠字符。
因此,你的专栏应该这样说:
source=folder+"\\"+src_file
BTW:为@paxdiablo(在我的dia骂之前进入)和@Nick(有一个适当的Pythonic方式做你想做的事情)的upvote