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按照多个字符对字符串进行分割的方法
Mar 17 Python
详解Python当中的字符串和编码
Apr 25 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
pycharm 主题theme设置调整仿sublime的方法
May 23 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
Python动态导入模块和反射机制详解
Feb 18 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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 zend 相对路径问题
2009/01/12 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
python爬虫爬取淘宝商品信息
2018/02/23 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Python获取时间戳代码实例
2019/09/24 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python里反向传播算法详解
2020/11/22 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
荷兰本土平价百货:HEMA
2017/10/23 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
法人授权委托书
2014/04/03 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python