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爬虫神器Beautiful Soup用法
Jan 20 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python七夕浪漫表白源码
Apr 05 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
Python ConfigParser模块的使用示例
Oct 12 Python
python3中确保枚举值代码分析
Dec 02 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
Python交换变量
2008/09/06 Python
用Python抢过年的火车票附源码
2015/12/07 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
wxpython实现图书管理系统
2018/03/12 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
Python谱减法语音降噪实例
2019/12/18 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
汽修专业学生自我鉴定
2013/11/16 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers