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根据经纬度计算距离示例
Feb 16 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python导入pandas具体步骤方法
Jun 23 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
Python爬取12306车次信息代码详解
Aug 12 Python
Python3.9新特性详解
Oct 10 Python
python爬虫基础之urllib的使用
Dec 31 Python
在Django中使用MQTT的方法
May 10 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 jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python去掉行尾的换行符方法
2017/01/04 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
联强国际笔试题面试题
2013/07/10 面试题
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
花田少年史观后感
2015/06/16 职场文书
检讨书格式
2019/04/25 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL