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查找指定具有相同内容文件的方法
Jun 28 Python
Python人脸识别初探
Dec 21 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
numpy np.newaxis 的实用分享
Nov 30 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Python流程控制常用工具详解
Feb 24 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
举例讲解Python装饰器
Dec 24 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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三元运算的2种写法代码实例
2014/05/12 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
旷课检讨书2000字
2014/01/14 职场文书
党员志愿者活动方案
2014/08/28 职场文书
工作作风承诺书
2014/08/30 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
拾金不昧感谢信
2015/01/21 职场文书
作弊检讨书
2015/01/27 职场文书
学生病假条怎么写
2015/08/17 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
推普标语口号大全
2015/12/26 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
MySQL慢查询的坑
2021/04/28 MySQL
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android