斜杠与反斜杠的用法区别

时间:2021-11-27 04:22:25

每次在编写路径的时候,总是被路径中的斜杠和反斜杠所迷惑,今天特地查了一下,总结各方面的情况,介绍如下:

1.斜杠和反斜杠的通常用法
正斜杠 “ / ” (英文名:lash)表示除法,分隔。在windows系统中通常用来分隔命令行参数,/ 表示选项等。不能作为文件名。 而在unix/linux系统中,/表示目录。由于web遵循unix命名,所以在网址(URL)中,/表示目录。 
反斜杠 “ \ ” (英文名:backslash),在windows系统中用来表示目录。在很多编程语言(C/C++等)中表示转义字符。
2. 在不同操作系统中的作用

在Unix/Linux中,路径的分隔采用正斜杠"/",比如"/home/hutaow";而在Windows中,路径分隔采用反斜杠"\",比如"C:\Windows\System"。

Windows 用反斜杠(“\”)的历史来自 DOS,而 DOS 的另一个传统是用斜杠(“/”)表示命令行参数,比如:dir  /s  /b shell32.dll

既然 DOS 这边斜杠被占用了,只好找另外一个。那就是 \ 了。而在 UNIX 环境中,我们用减号(“-”)和双减号(“--”)表示命令行参数。

3. 在写路径时用法

在C/C++中:

我们知道,在C/C++中 \ 是一种转义字符,\\ 他表示一个\,\n表示换行一样。所以C/C++中的路径名:C:\Program Files\Google\Chrome\Chrome.exe

C中应写为filename=“C:\\Program Files\\Google\\Chrome\\Chrome.exe”或filename="C:/Program Files/Google/Chrome/Chrome.exe"

C++中为 CString filename=_T("C:\\Program Files\\Google\\Chrome\\Chrome.exe");

或CString filename=_T("C:/Program Files/Google/Chrome/Chrome.exe");

有时候,利用双反斜杠写路径也认为是对的,如

在URL中:

用  /   。如:http://news.sina.com.cn/z/yadzh2013/    。  但这里是  //   如:http://www.hao123.com/

在Python中:

方法1.  使用斜杠,如  path=‘C:/Program Files/Google/Chrome/Chrome.exe’

方法2. 使用双反斜杠,如 path=‘C:\\Program Files\\Google\\Chrome\\Chrome.exe’

方法3. 使用raw string很,如 path=r‘C:\Program Files\Google\Chrome\Chrome.exe’

利用方法3时,会遇到问题,比如

>>> print  'aa\nbb'
aa
bb
>>> print  r'aa\nbb'
aa\nbb

上面的\n作为转义字符输出,这是没有问题的,下面中间的\'没有认为是转义字符输出,这是在使用raw string时,反斜杠虽然不再做转义用,但是它还有一定的作用。

这样就产生了一个问题,如果在写路径是最后的符号是\,就会报错。

如:>>> print r'c:\windows\tools\'
SyntaxError: EOL while scanning string literal

最后的\'会出错,因为\把后面的’当做是正常的符号,而没有把它当做单引号与前面的匹配。

原来,raw string本来就不是为了方便写Windows路径而设计的,而是为了方便写正则表达式设计的。在正则表达式中,反斜杠是转义字符,因此不可能出现以反斜杠结尾的正则表达式。