当你搜索 "获取当前文件路径" 时,有的文章会提到用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()))

手敲不易,如果有帮助,请您给我点个推荐,感谢。

来源:oschina

链接:https://my.oschina.net/u/4407242/blog/4257763

python getcwd 与dirname_python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】...相关推荐

  1. AI算法工程师 | 02人工智能基础-Python基础(四)os模块_打开读取文件

    文章目录 Python基础语法 之 文件和流 os 模块 调用操作系统命令 操作文件和目录 案例-文件重命名 打开读取文件 打开文件 读取文件 补充-中文编码问题 Python基础语法 之 文件和流 ...

  2. python安装os模块_python的os模块(ipython,文件,目录,权限,管理)

    什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...

  3. ipython使用oracle,python的os模块(ipython,文件,目录,权限,管理)

    什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...

  4. python os 遍历 子目录中所有文件_Python处理文件系统的10种方法 !

    通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互.本文为相关研发人员和数据科学家提供了一个实现指南,并重点介绍10个基本的os和s ...

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

    最近又遇到之前积累下的python路径问题,于是花了好大功夫才理清这些路径之前的关系,以及如何使用. 1.抛出问题 由此,我们可见在执行脚本程序时,编译器所在的路径决定了CWD(当前工作路径),我们不 ...

  6. python getcwd 与dirname_Python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比...

    转自:http://blog.csdn.net/cyjs1988/article/details/77839238 下午博主更新了一篇讲述获取当前项目路径的博文,然后得到了悠悠校长的指点,又了解了一种 ...

  7. Python os.getcwd() 方法

    Python os.getcwd() 方法 转存失败 Python OS 文件/目录方法 概述 os.getcwd() 方法用于返回当前工作目录. 语法 getcwd()方法语法格式如下: os.ge ...

  8. python getcwd 转义,Python os.getcwd() 方法

    Python os.getcwd() 方法 概述 os.getcwd() 方法用于返回当前工作目录. 语法 getcwd()方法语法格式如下: os.getcwd() 参数 无 返回值 返回当前进程的 ...

  9. python getcwd_Python os.getcwd()方法

    Python os.getcwd()方法 概述 os.getcwd() 方法用于返回当前工作目录. 语法 getcwd()方法语法格式如下: os.getcwd() 参数 无 返回值 返回当前进程的工 ...

最新文章

  1. Deploy Office Communications Server 2007R2 Group Chat Server(二)
  2. component映射
  3. 织梦根目录下面404页面,主页能正常运行404页面,切换至栏目页404页面内的图片不能正常显示,解决...
  4. opencv2.2.0源代码(include文件)分析
  5. Maven打包排除某个资源或者目录
  6. django-静态文件设置
  7. 气体管道管径及流量对照表_气体涡轮流量计的选型要点?
  8. kafka 新加入副本_Apache-Kafka 核心组件和流程-控制器
  9. 《R语言入门与实践》第八章:S3 与 R 面对对象编程
  10. GPS 经纬度换算方法和定位误差计算
  11. HTML 播放视频的embed标签和Object标签(转)
  12. python mp3转wav_python 录音,WAV转MP3
  13. Android init.rc介绍及其语法
  14. SQLiteHelper帮助类
  15. 学习C基础这一篇就够了
  16. 习惯七 不断更新---平衡的自我提升原则
  17. 20套各种风格影视动画公司响应式企业模电影上映影讯网站模板电影软件网页CSS模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应
  18. 编程开发中的起名规范
  19. Vue学习笔记 —— 路径引入
  20. 产品卖点和目标人群如何匹配

热门文章

  1. Linux内存中的 buffer 和 cache
  2. [WinError 10038] 在一个非套接字上尝试了一个操作
  3. yolov3 pytorch错误集合
  4. UserWarning: Update your `Conv2D`
  5. matlba 正交基
  6. 【交换机】交换机如何配置光电复用接口
  7. Cissp-【第3章 安全工程】-2021-2-18(237页-248页)
  8. oracle如何删除可回收归档,Oracle正确删除归档并回收空间的方法
  9. java程序能转变为javafx_如何将intellij中的普通Java项目转换为JavaFx项目
  10. android studio编译JNI问题ninja: fatal: couldn‘t open nul的解决