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 字符串操作方法大全
Mar 11 Python
python基础教程之面向对象的一些概念
Aug 29 Python
python中二维阵列的变换实例
Oct 09 Python
python实现定时播放mp3
Mar 29 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
python使用Matplotlib画饼图
Sep 25 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
零基础学python应该从哪里入手
Aug 11 Python
Python实现像awk一样分割字符串
Sep 15 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
一个php作的文本留言本的例子(四)
2006/10/09 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
python获取指定网页上所有超链接的方法
2015/04/04 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
软件测试面试题
2015/10/21 面试题
申报职称专业技术个人的自我评价
2013/12/12 职场文书
成人继续教育实施方案
2014/03/01 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
解除同居协议书
2015/01/29 职场文书
北京英文导游词
2015/02/12 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
队名及霸气口号大全
2015/12/25 职场文书