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正则表达式抓取成语网站
Nov 20 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
Python 中字符串拼接的多种方法
Jul 30 Python
python中单例常用的几种实现方法总结
Oct 13 Python
详解Python的三种可变参数
May 08 Python
python分布式计算dispy的使用详解
Dec 22 Python
在python中求分布函数相关的包实例
Apr 15 Python
Python文件夹批处理操作代码实例
Jul 21 Python
python中Mako库实例用法
Dec 31 Python
python scipy 稀疏矩阵的使用说明
May 26 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
session 的生命周期是多长
2006/10/09 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
python游戏地图最短路径求解
2019/01/16 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
班主任班级寄语大全
2014/04/04 职场文书
秘书英文求职信
2014/04/16 职场文书
小学生作文评语大全
2014/04/21 职场文书
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS