python3获取当前目录的实现方法


Posted in Python onJuly 29, 2019

1. 以前的方法

如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。

如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。

具体来说,如果你在C:\test目录下执行python getpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。

更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化:

1.如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;

2.如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。

(Edit Section ↓)

2.正确的方法

但以上这些其实都不是脚本文件所在目录的位置。

比如C:\test目录下还有一个名为sub的目录;C:\test目录下有getpath.py,sub目录下有sub_path.py,getpath.py调用sub_path.py;我们在C:\test下执行getpath.py。如果我们在sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C:\test”,因为Python虚拟机是从getpath.py开始执行的。如果想得到sub_path.py的路径,那么得这样:

os.path.split(os.path.realpath(__file__))[0]

[Get Code]

其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。也即在这个例子里,os.path.realpath(__file__)输出是“C:\test\sub\sub_path.py”,而os.path.split(os.path.realpath(__file__))[0]输出才是“C:\test\sub”。

(Edit Section ↓)

3.实例说明

总之,举例来讲,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:

假设目录结构是:

C:\test
 |
 [dir] getpath
 |
 [file] path.py
 [dir] sub
  |
  [file] sub_path.py

然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:

•os.getcwd() “C:\test”,取的是起始执行目录
•sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录
•os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录

PS:下面看下python3获取当前目录和上级目录

d = path.dirname(__file__) #返回当前文件所在的目录 
# __file__ 为当前文件

获得某个路径的父级目录:

parent_path = os.path.dirname(d) #获得d所在的目录,即d的父级目录 
parent_path = os.path.dirname(parent_path) ##获得parent_path所在的目录即parent_path的父级目录

获得规范的绝对路径:

abspath = path.abspath(d) #返回d所在目录规范的绝对路

总结

以上所述是小编给大家介绍的python3获取当前目录的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python 代码性能优化技巧分享
Aug 07 Python
小小聊天室Python代码实现
Aug 17 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
Python3 实现串口两进程同时读写
Jun 12 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 #Python
Django框架创建mysql连接与使用示例
Jul 29 #Python
python使用minimax算法实现五子棋
Jul 29 #Python
浅析python 中大括号中括号小括号的区分
Jul 29 #Python
Django分页功能的实现代码详解
Jul 29 #Python
微信小程序python用户认证的实现
Jul 29 #Python
Python 堆叠柱状图绘制方法
Jul 29 #Python
You might like
多php服务器实现多session并发运行
2006/10/09 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python类中self参数用法详解
2020/02/13 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
会计辞职信范文
2014/01/15 职场文书
公司承诺书怎么写
2014/05/24 职场文书
节约能源标语
2014/06/17 职场文书
安全保证书
2015/01/16 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书