python获取当前路径

import os,sys

使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(file)、os.path.realpath(file)

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”。

#!/bin/env python
#-*- encoding=utf8 -*- import os,sys if __name__=="__main__": print "__file__=%s" % __file__ print "os.path.realpath(__file__)=%s" % os.path.realpath(__file__) print "os.path.dirname(os.path.realpath(__file__))=%s" % os.path.dirname(os.path.realpath(__file__)) print "os.path.split(os.path.realpath(__file__))=%s" % os.path.split(os.path.realpath(__file__))[0] print "os.path.abspath(__file__)=%s" % os.path.abspath(__file__) print "os.getcwd()=%s" % os.getcwd() print "sys.path[0]=%s" % sys.path[0] print "sys.argv[0]=%s" % sys.argv[0]
输出结果:
D:\>python ./python_test/test_path.py
__file__=./python_test/test_path.py
os.path.realpath(__file__)=D:\python_test\test_path.py
os.path.dirname(os.path.realpath(__file__))=D:\python_test
os.path.split(os.path.realpath(__file__))=D:\python_test
os.path.abspath(__file__)=D:\python_test\test_path.py
os.getcwd()=D:\
sys.path[0]=D:\python_test
sys.argv[0]=./python_test/test_path.py

os.getcwd() “D:\”,取的是起始执行目录

sys.path[0]或sys.argv[0] “D:\python_test”,取的是被初始执行的脚本的所在目录

os.path.split(os.path.realpath(__file__))[0] “D:\python_test”,取的是__file__所在文件test_path.py的所在目录

正确获取当前的路径:

__file__是当前执行的文件
# 获取当前文件 __file__的路径
print "os.path.realpath(file)=%s" % os.path.realpath(file) # 获取当前文件file的所在目录
print "os.path.dirname(os.path.realpath(file))=%s" % os.path.dirname(os.path.realpath(file))   
# 获取当前文件file的所在目录
print "os.path.split(os.path.realpath(file))=%s" % os.path.split(os.path.realpath(file))[0] 

最新文章

  1. 页面Button/Link 传参数
  2. 简单易懂的Activity四种启动模式
  3. POJ 1850 Code
  4. 12. Android框架和工具之 StringUtils(字符串操作)
  5. 武汉科技大学ACM:1005: 单位转换
  6. Android-第一个Android程序
  7. C# WinForm 拖动无边框窗体 改变无边框窗体尺寸
  8. 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
  9. mac生成ssh keys
  10. zabbix SNMP OID列表
  11. hisi35xx串口驱动的完善
  12. 1.1大数据平台架构及Hadoop生态圈
  13. 20165231 预习作业3 linux安装及学习
  14. taro 微信小程序原生作用域获取
  15. 让listView gridView全部扩展开
  16. bitcoin双花
  17. Cloud Resource
  18. 打造 Laravel 优美架构 谈可维护性与弹性设计
  19. weblogic.servlet.proxy.HttpProxyServlet 进行代理设置
  20. git检查与放弃本地的代码修改情况

热门文章

  1. UDP通信简单 小结
  2. 配置lombok到eclipse上去
  3. 转:git常用操作
  4. vscode快捷操作
  5. EF 将MSSQL 更换成 POSTRESQL
  6. 开源you-get项目爬虫,以及基于python+selenium的自动测试利器
  7. linux命令详解——iostat
  8. 2、screen工具
  9. Vi 入门简易教程
  10. USRP B210 更改A通道或B通道