这是一个非常基础的细节问题 , 不过稍微不注意程序就会出现问题 。 事情是这样的 , 在Windows系统里用Python写了一个小软件 。 里面import os用os得到路径连接到某个具体的文件作为字符串传递 , 这里用了一个反斜杠“\\”加上后面文件名字符串 , 后面代码调用的时候把它传递出去执行后续操作 。 测试成功 , 一切顺利 。 然后接着写其他代码 。
【Windows|在windows中python时灵时不灵的反斜杠和双反斜杠】一顿折腾后 , 再测试一些文件 , 奇怪的是 , 同样的代码 , 时而能成功运行时而运行失败 。 疑惑不解 , 还以为是环境或者文件出现了什么问题 。 反复检查一通 , 依然无果 , 代码要实现的功能 , 依然是有时候就出结果了 , 有时候就是丢三落四的不出结果 。 于是 , 照例 , 开始 , 如同怀疑人生意义怀疑自己 。 后来猪头灵光一现 , 突然就发现了错误 。
由于反斜杠“\\”是Windows系统文件目录结构使用的分隔符 , 所以我们在写嵌套文件夹或者文件夹内文件的时候 , 就需要用它来连接 , 不过机智客觉得天下总有这样的好巧不巧 , 在Python编程中 , 反斜杠“\\”也用来转义一些特殊字符 。 毕竟代码字符串中呈现的不仅有要用到的看得见的普通字符 , 还有不一定能看得到的特殊控制字符或者还需要有转义字符本身 。
所以这就有意无意成了一个“坑”——这是一个很不起眼的细节 , 我们这么说 , 一般情况下 , 用单反斜杠是没问题的 。 然而 , 只是一般情况 , 你要跟机智客一样智商和注意力一样都上不去 , 马马虎虎大差不差 , 一般当所有的话 , 你就可能被“坑”了 。 比如这次遇到的问题 。 如果我们用的是Windows , 用到了反斜杠“\\” , 后面跟个文件名字符串 。 你写了一个反斜杠 。 那么亲爱的小盆友 , 上帝保佑你吧 , 遇到一般情况 , 你很欢乐地发现你的代码啥事没有 。 如果遇到二般情况 , 你就死翘翘了 。
字符串里的单反斜杠 , 后面如果跟了其他字母 , 那就没问题 。 不过如果跟了n那就得斟酌了 。 这次就是这个情况 。 因为个别文件名是n开头 , 到了代码执行就被像女朋友一样程序误解了 。 就好比你经常给女朋友买礼物 。 而有一天买的礼物原本是送给老妈的 , 结果女朋友还以为是送给她的 。 它还以为这是一个转义字符 , 结果就是私自吞掉了 。
当然了 , 正如文章开头说的 , 这只是一个不起眼的细节知识 。 在实际编程中 , 有大量这类的细节 , 项目工程稍微有点点规模 , 就很容易让人头大 , 不说别的 , 光字符堆积看得眼就花了 。 反正怎么说呢 , 即便是自己半个月前自己亲手敲的代码 , 自己都不想去看 , 你瞧代码这东西多让自己头大吧 。
- 华为|贵了一百元 华为畅享50比iQOO Z5x好在哪 看完这篇你应该明白了
- apache|汇总 | 2022年6月,全价格段性价比最高的装机方案,你想要的都在这
- 京东|在windows中python时灵时不灵的反斜杠和双反斜杠
- 深陷增长焦虑,餐企的第二增长曲线在哪儿?
- 汽车|发布会烧掉1000万元、关闭评论区,百度造车在藏什么?
- 话说|怪兽充电,没电了?
- 冰墩墩|人走茶凉!顶流冰墩墩,现在无人理睬
- 三星|105万巨幕在天上飞!三星国内首台110英寸Micro LED电视卖出去了
- 卢伟冰|11tpro+地用了两天,看看卢伟冰到底是不是在“忽悠”人
- 芒格|“最冷清的618”?暗战藏在了细节里