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基础入门学习笔记(Python环境搭建)
Jan 13 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
numpy下的flatten()函数用法详解
May 27 Python
python区分不同数据类型的方法
Oct 14 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
Python递归函数特点及原理解析
Mar 04 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
Python如何输出整数
Jun 07 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
django 自定义过滤器的实现
2019/02/26 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python处理RSTP视频流过程解析
2020/01/11 Python
商务邀请函
2015/01/30 职场文书
丽江古城导游词
2015/02/03 职场文书
英语教师个人总结
2015/02/09 职场文书
2015年库房工作总结
2015/04/30 职场文书
小学生安全保证书
2015/05/09 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书