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使用arp欺骗伪造网关的方法
Apr 24 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
Python的净值数据接口调用示例分享
Mar 15 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
python+pyqt5编写md5生成器
Mar 18 Python
微信小程序python用户认证的实现
Jul 29 Python
python yield和Generator函数用法详解
Feb 10 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php MySQL与分页效率
2008/06/04 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python创建子类的方法分析
2019/11/28 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
体育教育毕业生自荐信
2013/11/21 职场文书
董事长助理岗位职责
2014/02/18 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
小学生期末评语大全
2014/04/21 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
安全生产奖惩制度
2015/08/06 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
Golang的继承模拟实例
2021/06/30 Golang
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis