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中的闭包用法实例详解
May 05 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
Python 在局部变量域中执行代码
Aug 07 Python
Pytorch中的数据集划分&正则化方法
May 27 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
php 生成随机验证码图片代码
2010/02/08 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
PHP7新功能总结
2019/04/14 PHP
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
详解Python中for循环的使用
2015/04/14 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
python装饰器初探(推荐)
2016/07/21 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
浅析Python函数式编程
2018/10/06 Python
Django缓存系统实现过程解析
2019/08/02 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
python变量的作用域是什么
2020/05/26 Python
Python如何定义有可选参数的元类
2020/07/31 Python
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
职称自我鉴定
2013/10/15 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
小学班级口号大全
2015/12/25 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书