python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】
2020-04-28 22:36
686 查看
当你搜索 "获取当前文件路径" 时,有的文章会提到用os.getcwd(),但是这玩意要慎用!
废话不多说,直接上例子:
E:\program_software\Pycharm\ytb\ytb_api\api\views.py 文件内容如下:
path1 = os.path.abspath(os.path.dirname(os.getcwd())) print('path1: ', path1)
在别处调用后:
结果并不是想要的当前文件路径。
为什么会这样?
去看getcwd源码:
解释:return 得到当前工作路径(working directory)
那这个working directory到底是什么?
继续搜索:
翻译一下:
当前工作路径 working directory 就是脚本运行/调用/执行的地方,而不是脚本本身的地方。
也就是说「当前文件路径」跟「当前工作路径」没关系,
即os.getcwd() 返回值跟你的 Python 文件路径没关系,
如果要获得「文件路径」你得使用 __file__。
比如,我想要的是当前文件的绝对路径,那就需要这俩哥出场了:
还以E:\program_software\Pycharm\ytb\ytb_api\api\views.py 举例子:
# Return the absolute version of a path. 获取当前文件的绝对路径 print(os.path.abspath(__file__)) # E:/program_software/Pycharm/ytb/ytb_api/api/views.py # Returns the directory component of a pathname 获取当前文件所属的文件夹 print(os.path.dirname(__file__)) # E:/program_software/Pycharm/ytb/ytb_api/api
搭配使用,返回当前文件所在文件夹的绝对路径(这两个结果是一样的):
path1 = os.path.dirname(os.path.abspath(__file__)) print(path1) # E:/program_software/Pycharm/ytb/ytb_api/api path2 = os.path.abspath(os.path.dirname(__file__)) print(path2) # E:/program_software/Pycharm/ytb/ytb_api/api
如果看过些源码的话,会发现很多源码都这么用:
总结一下:
「当前文件路径」用 os.path.abspath(os.path.dirname(__file__))
「当前工作路径」用 os.path.abspath(os.path.dirname(os.getcwd()))
手敲不易,如果有帮助,请您给我点个推荐,感谢。
相关文章推荐
- C_获得当前的工作路径 _getcwd()函数:取得当前的工作目录(unix c和vc+6.0的都文件的区别)
- Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
- Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
- python——获取发当前文件的路径 -os.path.dirname() os.path.abspath()
- python使用os.getcwd()获取当前路径不正确
- Python3基础 os listdir curdir查看当前工作目录的所有文件的名字
- Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)
- python---os,sys的文件操作,strip()去除空格,.号当前目录查找,绝对路径查找
- python中利用os模块打印任意文件夹里面的文件名字,当前文件夹路径,已经其的目录名字
- Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
- Python获取当前文件的绝对路径,使用os.path来得到当前操作文件的绝对路径
- Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
- python shell中python os模块实用函数(含改变当前工作路径、显示当前目录等)
- Python3基础 os listdir curdir pardir 查看当前工作目录的上一级目录的所有文件的名字
- Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
- Python标准库03 路径与文件 (os.path包, glob包)
- Python标准库03 路径与文件 (os.path包, glob包)
- Python列出当前目录下所有含有指定名称的文件(包括路径)
- Python Shell中切换当前工作目录(路径)
- python --标准库 路径与文件 (os.path包, glob包)