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中的filter和lambda函数的使用
Apr 07 Python
在Python程序中实现分布式进程的教程
Apr 28 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python多线程和队列操作实例
Jun 21 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python字符串拼接六种方法介绍
Dec 18 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
Python序列化模块JSON与Pickle
Jun 05 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中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
js实现表格字段排序
2014/02/19 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
shell程序中如何注释
2012/01/28 面试题
远程研修随笔感言
2014/02/10 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
物业接待员岗位职责
2015/04/15 职场文书
喋血孤城观后感
2015/06/08 职场文书
学习心得体会
2019/06/20 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
总结python多进程multiprocessing的相关知识
2021/06/29 Python
nginx共享内存的机制详解
2022/03/21 Servers