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绘制人人网好友关系图示例
Apr 01 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
python3中str(字符串)的使用教程
Mar 23 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
django使用channels实现通信的示例
Oct 19 Python
Python 使用office365邮箱的示例
Oct 29 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邮件专题
2006/10/09 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
PHP 简单日历实现代码
2009/10/28 PHP
php session劫持和防范的方法
2013/11/12 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
python在协程中增加任务实例操作
2021/02/28 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
岗位职责怎么写
2014/03/14 职场文书
关于安全的演讲稿
2014/05/09 职场文书
安全环保标语
2014/06/09 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
村级个人对照检查材料
2014/08/22 职场文书
导游词之襄阳古城
2019/09/27 职场文书