近期在win10环境调试linux python代码时遇到一个有趣的现象,如题目所述。
现象
请看示例。
代码:
dir = "/home/lhb"
file = "pip.ini"
path = os.path.join(dir, file)
print(path)
输出:
/home/lhb\pip.ini
该结果再vs code或git bash窗口执行都一样结果。
linux平台的代码执行结果:
dcs-50@root:/home/lhb/tool$ cat test.py
import os
dir = "/home/lhb/"
file = "pip.ini"
path = os.path.join(dir, file)
print(path)
dcs-50@root:/home/lhb/tool$ python3 test.py
/home/lhb/pip.ini
分析
经过百度分析,原来有这样的规律: os.path.join()在Linux/macOS下会以斜杠(/)分隔路径,而在Windows下则会以反斜杠(\)分隔路径
平台系统的差异,一套代码不能打天下平台兼容性就有问题了。
解决方法
路径字符串需要以‘/’结尾,最后一个字符串不需要。
win10下,修改代码并执行如下:
lhb@DESKTOP-L64O580 MINGW64 ~/Desktop (master|SPARSE)
$ cat test.py
import os
dir = "/home/lhb/"
file = "pip.ini"
path = os.path.join(dir, file)
print(path)
lhb@DESKTOP-L64O580 MINGW64 ~/Desktop (master|SPARSE)
$ python test.py
/home/lhb/pip.ini
结论
python路径拼接,记得以‘/’结尾,才能保证跨平台使用。