python 获取脚本当前路径_Python获取脚本所在目录的正确方法
http://www.jb51.net/article/49035.htm
文章主要介绍了Python获取脚本所在目录的正确方法
1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。
如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。
具体来说,如果你在C:\test目录下执行python
getpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。
更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化:
如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;
如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。
2.正确的方法
但以上这些其实都不是脚本文件所在目录的位置。
比如C:\test目录下还有一个名为sub的目录;C:\test目录下有getpath.py,sub目录下有
sub_path.py,getpath.py调用sub_path.py;我们在C:\test下执行getpath.py。如果我们在
sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C:\test”,因为Python虚拟
机是从getpath.py开始执行的。如果想得到sub_path.py的路径,那么得这样:
os.path.split(os.path.realpath(__file__))[0]
其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此
还要用os.path.realpath()函数来处理一下。也即在这个例子里,os.path.realpath(__file__)输出是
“C:\test\sub\sub_path.py”,而os.path.split(os.path.realpath(__file__))[0]输
出才是“C:\test\sub”。
3.实例说明
总之,举例来讲,os.getcwd()、sys.path[0]
(sys.argv[0])和__file__的区别是这样的:
假设目录结构是:
C:test
[dir] getpath
[file] path.py
[dir] sub
[file] sub_path.py
然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:
os.getcwd()
“C:\test”,取的是起始执行目录
sys.path[0]或sys.argv[0]
“C:\test\getpath”,取的是被初始执行的脚本的所在目录
os.path.split(os.path.realpath(__file__))[0]
“C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录
python 获取脚本当前路径_Python获取脚本所在目录的正确方法相关推荐
- python获取当前路径的方法_Python获取脚本所在目录的正确方法【转】
原博文 2015-09-24 10:21 − 1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数.如果是要获得当前执行的脚本的所在目录位置,那么需要 ...
- php 获取key的位置,PHP获取当前所在目录位置的方法
本文实例讲述了PHP获取当前所在目录位置的方法.分享给大家供大家参考.具体分析如下: 如果要获取脚本文件的目录,要应用函数getcwd()来实现.函数声明如下: string getcwd ( voi ...
- python提高图片分辨率_python 获取图片分辨率的方法
python 获取图片分辨率的方法 pil版: from PIL import Image filename = r'E:\data\yangben\0.jpg' img = Image.open(f ...
- python查看网速_Python获取服务器网速
实时获取服务器网速的脚本 CentOS6版本 #!/usr/bin/python import os, re, time def get_net(): return re.search('eth0: ...
- python所有的父类_python获取父类的子类(遍历,递归),并循环执行所有子类的某一方法...
前言 换了新工作,踏足于python语言的开发,也把自己的学习过程记录下来. 一,递归获取某一父类的所有子类 all_subclasses = {'0': '0'} def get_all_class ...
- python获取当前年月日_Python获取、格式化当前时间日期的方法
Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...
- python处理行情数据_Python获取股票历史、实时数据与更新到数据库
要做量化投资,数据是基础,正所谓"巧妇难为无米之炊" 在免费数据方面,各大网站的财经板块其实已提供相应的api,如新浪.雅虎.搜狐...可以通过urlopen相应格式的网址获取数据 ...
- python高德 查询县_Python获取高德地图省市区县列表
项目中需要用省市区来进行检索,原想高德地图肯定会有API来获得这些数据,结果没有找到,有一个接口好像可以用,但是会附带大量的边界坐标点. 所以就不如自己把高德的省市区列表扒下来,自己写接口来完成这个功 ...
- python selenium爬虫实例_python使用selenium爬虫知乎的方法示例
说起爬虫一般想到的情况是,使用 python 中都通过 requests 库获取网页内容,然后通过 beautifulSoup 进行筛选文档中的标签和内容.但是这样有个问题就是,容易被反扒机制所拦住. ...
最新文章
- View (二) 自定义属性
- LA2678最短子序列
- 在流程梳理的过程中,OA工作组应采用国际先进方法
- mybatis 原理_图解源码 | MyBatis的Mapper原理
- python自动生成word版本试卷_Python解决问题:生成包含加减练习题的Word文件
- NB-IoT将给智能锁行业带来哪些影响?
- .sql文件_自己动手写SQL查询引擎
- 商业认知,新的一年已经开始,许多老板都制订了新的目标
- Async Python 竟不比sync Python 快,怎么回事?
- C++ 常见错误(02) —— 将dll(用c++写的)处理的结果展示在界面上
- gsonformat java代码_GSONFormat的简单使用
- 修改斐讯k3天气服务器,夏天了,给斐讯K3换智能调温套件降降温
- 笔记:常见TCP端口号
- 1380Problem C:zyf的A+B问题
- 前有狗屁不通文章生成器 | 后有申论生成器
- android https cer证书转换BKS
- 欧几里得 拓展欧几里得算法 讲解 (Euclid Extend- Euclid Algorithm)
- 判断矩形是否相交(包含,点相交,边相交)
- HBCTF第三场WP
- 2020 年 10 月编程语言排行榜
热门文章
- sql语句基础学习(不涉及多表查询)
- 山东大学有人陪!真的吗?_10,000小时! 您真的需要那么多吗?
- java map reduce 原理_MapReduce实现原理详解
- 如何阅读python文档_python 文档怎么看-问答-阿里云开发者社区-阿里云
- 蓝桥杯:试题 历届真题 修改数组【第十届】【省赛】【研究生组】Java实现
- docker 2376端口 CA 认证,并不能阻止服务器成为肉鸡
- 前端基础部分错题记录
- Python os模块文件操作(二)
- CSS中a标签样式原则 a:link a:visited a:hover a:active执行顺序
- .NET中多线程调试的一个办法