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的动态重新封装的教程
Apr 11 Python
python如何通过protobuf实现rpc
Mar 06 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python判断数字是否是超级素数幂
Sep 27 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python定时检测无响应进程并重启的实例代码
Apr 22 Python
python程序如何进行保存
Jul 03 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
python实现剪贴板的操作
Jul 01 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
中英文字符串翻转函数
2008/12/09 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP实现事件机制的方法
2015/07/10 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
电子商务专业个人的自我评价
2013/12/19 职场文书
酒店经理职责
2014/01/30 职场文书
2014年工程师工作总结
2014/11/25 职场文书
房贷工资证明范本
2015/06/12 职场文书
关于幸福的感言
2015/08/03 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技