python路径、工作路径、文件路径问题、改变当前路径

最近又遇到之前积累下的python路径问题,于是花了好大功夫才理清这些路径之前的关系,以及如何使用。

1.抛出问题Fig.1. 无法执行的案例Fig.2. 可执行的案例

Fig.3. 虚拟环境下脚本默认的编译器
Fig.4. conda环境下自带的编译器
由此,我们可见在执行脚本程序时,编译器所在的路径决定了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.的情况
Fig.5. os.chdir()切换当前工作路径到当前文件路径

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值