Python 获取当前所在目录的方法详解


Posted in Python onAugust 02, 2017

sys.path

模块搜索路径的字符串列表。由环境变量PYTHONPATH初始化得到。

sys.path[0]是调用Python解释器的当前脚本所在的目录。

sys.argv

一个传给Python脚本的指令参数列表。

sys.argv[0]是脚本的名字(由系统决定是否是全名)

假设显示调用python指令,如 python demo.py ,会得到绝对路径;

若直接执行脚本,如 ./demo.py ,会得到相对路径。

os.getcwd()

获取当前工作路径。在这里是绝对路径。
https://docs.python.org/2/library/os.html#os.getcwd

__file__

获得模块所在的路径,可能得到相对路径。

如果显示执行Python,会得到绝对路径。

若按相对路径来直接执行脚本 ./pyws/path_demo.py ,会得到相对路径。

为了获取绝对路径,可调用 os.path.abspath()

os.path 中的一些方法

os.path.split(path)

将路径名称分成头和尾一对。尾部永远不会带有斜杠。如果输入的路径以斜杠结尾,那么得到的空的尾部。

如果输入路径没有斜杠,那么头部位为空。如果输入路径为空,那么得到的头和尾都是空。
https://docs.python.org/2/library/os.path.html#os.path.split

os.path.realpath(path)

返回特定文件名的绝对路径。

https://docs.python.org/2/library/os.path.html#os.path.realpath

代码示例

环境 Win7, Python2.7

以 /e/pyws/path_demo.py 为例

#!/usr/bin/env python
import os
import sys

if __name__ == '__main__':
  print "sys.path[0] =", sys.path[0]
  print "sys.argv[0] =", sys.argv[0]
  print "__file__ =", __file__
  print "os.path.abspath(__file__) =", os.path.abspath(__file__)
  print "os.path.realpath(__file__) = ", os.path.realpath(__file__)
  print "os.path.dirname(os.path.realpath(__file__)) =", os.path.dirname(os.path.realpath(__file__))
  print "os.path.split(os.path.realpath(__file__)) =", os.path.split(os.path.realpath(__file__))
  print "os.getcwd() =", os.getcwd()

在 /d 中运行,输出为

$ python /e/pyws/path_demo.py
sys.path[0] = E:\pyws
sys.argv[0] = E:/pyws/path_demo.py
__file__ = E:/pyws/path_demo.py
os.path.abspath(__file__) = E:\pyws\path_demo.py
os.path.realpath(__file__) = E:\pyws\path_demo.py
os.path.dirname(os.path.realpath(__file__)) = E:\pyws
os.path.split(os.path.realpath(__file__)) = ('E:\\pyws', 'path_demo.py')
os.getcwd() = D:\

在e盘中用命令行直接执行脚本

$ ./pyws/path_demo.py
sys.path[0] = E:\pyws
sys.argv[0] = ./pyws/path_demo.py
__file__ = ./pyws/path_demo.py
os.path.abspath(__file__) = E:\pyws\path_demo.py
os.path.realpath(__file__) = E:\pyws\path_demo.py
os.path.dirname(os.path.realpath(__file__)) = E:\pyws
os.path.split(os.path.realpath(__file__)) = ('E:\\pyws', 'path_demo.py')
os.getcwd() = E:\
Python 相关文章推荐
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
使用python生成目录树
Mar 29 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
Jul 09 Python
pytorch实现ResNet结构的实例代码
May 17 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
浅谈python中的数字类型与处理工具
Aug 02 #Python
Python实现的快速排序算法详解
Aug 01 #Python
Python实现的弹球小游戏示例
Aug 01 #Python
Python的mysql数据库的更新如何实现
Jul 31 #Python
Python操作csv文件实例详解
Jul 31 #Python
Python实现字典去除重复的方法示例
Jul 31 #Python
浅析使用Python操作文件
Jul 31 #Python
You might like
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python 正则表达式的高级用法
2016/12/04 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python assert的用处示例详解
2019/04/01 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
C面试题
2015/10/08 面试题
50道外企软件测试面试题
2014/08/18 面试题
物业电工岗位职责
2013/11/20 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
学校通报表扬范文
2015/05/04 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Django基础CBV装饰器和中间件
2022/03/22 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL