每次在编写路径的时候,总是被路径中的斜杠和反斜杠所迷惑,今天特地查了一下,总结各方面的情况,介绍如下:
1.斜杠和反斜杠的通常用法
正斜杠 “ / ” (英文名:lash)表示除法,分隔。在windows系统中通常用来分隔命令行参数,/ 表示选项等。不能作为文件名。 而在unix/linux系统中,/表示目录。由于web遵循unix命名,所以在网址(URL)中,/表示目录。2. 在不同操作系统中的作用
反斜杠 “ \ ” (英文名:backslash),在windows系统中用来表示目录。在很多编程语言(C/C++等)中表示转义字符。
在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路径而设计的,而是为了方便写正则表