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操作xml文件详细介绍
Jun 09 Python
Python切片用法实例教程
Sep 08 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
Python 的内置字符串方法小结
Mar 15 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python生成随机红包的实例写法
Sep 02 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
Python configparser模块应用过程解析
Aug 14 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 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 COOKIE设置为浏览器进程
2009/06/21 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python实现的矩阵类实例
2017/08/22 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
python 项目目录结构设置
2020/02/14 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
英国现代绅士品牌:Hackett
2017/12/17 全球购物
业务主管岗位职责
2013/11/20 职场文书
国税会议欢迎词
2014/01/16 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android