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保存MongoDB上的文件到本地的方法
Mar 16 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python用threading实现多线程详解
Feb 03 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
python多个模块py文件的数据共享实例
Jan 11 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python面向对象之类的封装操作示例
Jun 08 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
python opencv进行图像拼接
Mar 27 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
React中的render何时执行过程
2018/04/13 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python实现随机漫步功能
2018/07/09 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
Python的logging模块基本用法
2020/12/24 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
应用心理学个人求职信范文
2013/12/11 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
快递员岗位职责
2014/09/12 职场文书
竞选学委演讲稿
2014/09/13 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
暑期家教宣传单
2015/07/14 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
Pandas数据类型之category的用法
2021/06/28 Python