最近又遇到之前积累下的python路径问题,于是花了好大功夫才理清这些路径之前的关系,以及如何使用。
1.抛出问题
由此,我们可见在执行脚本程序时,编译器所在的路径决定了CWD(当前工作路径),我们不能直接像Fig.1/2一样无脑地直接读取png图像了。**那这样有人就说,那我每次把脚本的编译器选在同一个地方不就好了么?像Fig.2这样的情况。**通常,当我们不需要conda管理packages时,我们创建环境直接用python虚拟环境下自带的编译器python.exe,如Fig.3.所示,此时CWD是我们需要的;实际上,我们在运行程序时,需要用到conda控制环境,在不同的环境下搭不同版本的packages方便我们管理,因此在用conda的情况下,编译器默认路径自动切换到xxx\anaconda\envs"your envs"\python.exe,如Fig.4.所示,于是就导致获得CWD不是我们所需要的。
2.基本概念
import os
#1获得当前路径,cwd=current working directory
os.getcwd()
#2获得绝对路径
os.path.abspath()
#3获得当前路径的上级目录路径
os.path.dirname()
#4组合使用,获得当前**文件路径**
os.path.abspath(os.path.dirname(__file__))
#5组合使用,获得当前**工作路径**
os.path.abspath(os.getcwd())
#6**改变当前工作目录到指定路径**
os.chdir()
3.利用os.chdir()解决1.的情况
4.提议
建议大家平常养成习惯,尽可能减少在比较大的工程中使用’.’, ‘./’, './/'这些返回符号,尽可能还是使用绝对路径控制,具体案例可参考参考文献1中的案例。
5参考文献:
[1]:python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】https://www.cnblogs.com/liangmingshen/p/12794631.html
[2]:Python3 os.chdir() 方法https://www.runoob.com/python3/python3-os-chdir.html
[3]:python相对路径文件无法读取,更改工作路径https://blog.csdn.net/lovely__RR/article/details/108000037