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实现倒计时的示例
Feb 14 Python
Python实现批量下载图片的方法
Jul 08 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python实现八大排序算法(1)
Sep 14 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
django中间键重定向实例方法
Nov 10 Python
python使用rsa非对称加密过程解析
Dec 28 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
python批量生成条形码的示例
Oct 10 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
thinkPHP实现表单自动验证
2014/12/24 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
Javascript 布尔型分析
2008/12/22 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
python编辑用户登入界面的实现代码
2018/07/16 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
教育系毕业生中文求职信范文
2013/10/06 职场文书
股权转让协议书
2014/04/12 职场文书
社团活动总结范文
2014/04/26 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年稽查工作总结
2014/12/20 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
2015年司机工作总结
2015/04/23 职场文书
房屋维修申请报告
2015/05/18 职场文书
安全教育主题班会总结
2015/08/14 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技