转载自:http://withwsf.github.io/2015/12/30/Python%E5%9C%A8Windows%E7%8E%AF%E5%A2%83%E4%B8%8B%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%E9%97%AE%E9%A2%98%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/
Windows中路径分隔符是反斜线’\’,而在Python中’\’又有转义符的作用,因而直接从windows资源管理器复制的路径在Python中是不能正常识别的。
最优实践:
使用os.path.join来join不同的路径,比如
path=os.path.join(dirpath,filepath)
也可以使用os.sep,python会根据不同的系统自动选择合适的路径分隔符
path=dirpath+os.sep+filepath
次优方案
可以将所有路径都使用正斜线’/‘,不管在Windows和Linux中都适用.
不要使用
在引用的字符串前面加上’r’可以将转义字符串(escaped strings )转换为原始字符串(raw strings),可以解决部分问题。比如
1 file=open('c:\myfile') #打开错误
2 file=open(r'c:\myfile')#可以正确打开
但是’r’是为了方便书写正则表达式而不是为了解决Windows下文件路径问题而设计的特性,所以会遇到一下问题
file=open(r’c:\dir\’+’myfile’)
上述代码是错误的,虽然’\’失去了转义作用,但仍然有保护作用,其后的‘’’并不会被视为closing delimiter。
由此可见,使用r不仅没有完全解决问题,还会引入新的问题,所以最好不要使用。
虽然博主是那样说的,但是我为了测试一些东西用了最不好的那种方法,很方便
不要像我一样偷懒啦