Python在Windows环境下处理文件路径问题最佳实践

(转载)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不同的路径,比如
    1
    
    path=os.path.join(dirpath,filepath)
    

也可以使用os.sep,python会根据不同的系统自动选择合适的路径分隔符

1
path=dirpath+os.sep+filepath

  • 次优方案
    可以将所有路径都使用正斜线’/‘,不管在Windows和Linux中都适用.
  • 不要使用
    在引用的字符串前面加上’r’可以将转义字符串(escaped strings )转换为原始字符串(raw strings),可以解决部分问题。比如:
    1
    2
    
    file=open('c:\myfile') #打开错误
    file=open(r'c:\myfile')#可以正确打开
    

但是’r’是为了方便书写正则表达式而不是为了解决Windows下文件路径问题而设计的特性,所以会遇到一下问题

file=open(r’c:\dir\’+’myfile’)

上述代码是错误的,虽然’\’失去了转义作用,但仍然有保护作用,其后的‘’’并不会被视为closing delimiter。

由此可见,使用r不仅没有完全解决问题,还会引入新的问题,所以最好不要使用。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值