1).python获取当前运行的类名函数名import inspect

def get_current_function_name():

return inspect.stack()[1][3]

class MyClass:

def function_one(self):

print "%s.%s invoked"%(self.__class__.__name__, get_current_function_name())

if __name__ == "__main__":

myclass = MyClass()

myclass.function_one()

动态获取当前运行的函数名很方便,特别是对于一些debug系统来说

2).获取脚本名(三种方式)import os,sys,inspect

def path():

return inspect.getfile(sys.modules[__name__])

def path2():

return inspect.getfile(inspect.currentframe())

def path3():

return inspect.stack()[1][1]

print path()

print path2()

print path3()

打印结果:

34.py

34.py

34.py

分——割——————线——————————————————————

以下三个py文件是有联系的,后面一个引用前面一个中的相关函数,测试顺序pathtest.py-->aaa.py-->test01.py,通过它们的打印结果,可以印证python获取路径的三种情况。|---bin

|---test01.py

|---src

|---aaa.py

|---testcase

|---group01

|---pathtest.py

Python获取路径的三种情况:获取函数定义所在脚本路径,获取调用函数脚本所在路径,获取启动Python解释器脚本所在路径。最常用的方式就是pathtest.py中current_path中获取路径的方式。

inspect.getfile(inspect.currentframe())和inspect.stack()[0][1]得到的是定义该函数的脚本文件的路径,包含脚本名称

inspect.stack()[1][1]得到的是调用该脚本的脚本文件的路径,包含脚本名称

os.path.dirname(os.path.realpath(sys.argv[0]))得到的是执行python x.py命令时,脚本参数x.py(也就是argv[0])所在路径

os.path.dirname(os.path.realpath(sys.path[0])),根据sys.path[0],sys.path[1],sys.path[2]取不同的值,获取调用函数脚本所在路径或者获取启动Python解释器脚本所在路径

1.  pathtest.py

获取脚本路径(五种方式):

cd /soft/testcase/group01

vim pathtest.py#coding:utf-8

import os,sys,inspect

def path():

dir = inspect.getfile(sys.modules[__name__])

return os.path.abspath(os.path.dirname(dir))

def path1():

dir = os.path.realpath(sys.argv[0])

if os.path.isfile(dir):

path=os.path.dirname(dir)

return os.path.abspath(path)

def path2():

this_file = inspect.getfile(inspect.currentframe())#得到定义该函数的脚本路径

return os.path.abspath(os.path.dirname(this_file))

def script_path():

caller_file = inspect.stack()[0][1]#stack()[0][1]得到定义该函数的脚本路径,stack()[1][1]获取调用该函数的脚本所在路.径

return os.path.abspath(os.path.dirname(caller_file))

def current_path():

dir = os.path.realpath(sys.path[0])

if os.path.isfile(dir):

path=os.path.dirname(dir)

return os.path.abspath(path)

else:

caller_file=inspect.stack()[1][1]

return os.path.abspath(os.path.dirname(caller_file))

#print path()

#print path1()

#print path2()

#print script_path()

#print current_path()

打印结果:

/soft/testcase/group01

/soft/testcase/group01

/soft/testcase/group01

/soft/testcase/group01

/soft/testcase/group01

2.  aaa.py

cd /soft/src

vim aaa.pyimport os

import sys

import inspect

sys.path.append("../testcase/group01")

import pathtest

def caller_func():

caller_path=pathtest.script_path()

return caller_path

def def_func():

def_path=pathtest.path2()

return def_path

def real_func():

real_func=pathtest.path1()

return real_func

def curr_func():

cur_func=pathtest.current_path()

return cur_func

#print caller_func()

#print def_func()

#print real_func()

#print curr_func()

打印结果:

/soft/testcase/group01

/soft/testcase/group01

/soft/src

/soft/src

3.  test01.py

cd /soft/bin

vim test01.pyimport os,sys,inspect

sys.path.append("../src")

import aaa

def func_a():

return aaa.caller_func()

def func_b():

return aaa.def_func()

def func_c():

return aaa.real_func()

def func_d():

return aaa.curr_func()

print func_a()

print func_b()

print func_c()

print func_d()

打印结果:

/soft/testcase/group01

/soft/testcase/group01

/soft/bin

/soft/src

python脚本名_python获取类名函数名、脚本路径相关推荐

  1. Java中获取当前函数名

    Java中获取当前函数名 博客分类: Java JavathreadJDKIDEA  有时候我们需要在程序中获取当前运行的函数名,如何简单的做到这点呢?我们可以用getStackTrace轻松搞定. ...

  2. java 获取当前方法的名称_Java中获取当前函数名

    有时候我们需要在程序中获取当前运行的函数名,如何简单的做到这点呢?我们可以用getStackTrace轻松搞定. 一提到getStatckTrace多数人会联想到Thowable中的getStackT ...

  3. python找最大值的函数_Python 获取最大值函数

    Python 获取最大值函数 以下实例中我们使用max()方法求最大值:# -*- coding: UTF-8 -*- # Filename : test.py # 最简单的 print(max(1, ...

  4. python函数名是变量_Python 变量做函数名的简单示例

    这篇文章主要为大家详细介绍了Python 变量做函数名的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! PHP ...

  5. python匿名函数调用_python之内置函数,匿名函数

    内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...

  6. python return返回值格式化_day11__函数名的应用,python新特f-strings格式化输出、迭代器...

    一.函数名的应用 ​函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值:但是作为函数名他也有特殊的功能就是加上()就会执行对应的函数,所以我们可以把函数名 ...

  7. python递归函数公式_python之内置函数,匿名函数,递归函数

    一. 内置函函数 什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就 ...

  8. python入门函数编程_Python入门——面向函数的编程,过程

    第一部分 函数的定义及调用 1.1 为什么要用函数 提高代码复用性--抽象出来,封装为函数 将复杂的大问题分解成一系列小问题,分而治之--模块化设计的思想 利于代码的维护和管理 1.2 函数的定义及调 ...

  9. python map用法_Python中 map()函数的用法详解

    python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...

最新文章

  1. Buttomsheetdialog的简单实用
  2. micropython文件上传软件_ESP32玩转MicroPython(二) 连接WIFI网络 webperl文件传输
  3. HIBERNATE 持久化基础
  4. 回流Reflow和重绘Repaint
  5. 基于机器视觉的散热器钎焊缺陷检测系统研发
  6. mysql gis vs postgis_mysql空间扩展VSPostGIS
  7. PHP SOCKET SERVER 二
  8. 12,三维Panel
  9. 人工智能现状和发展趋势
  10. cmt obm odm 代工模式oem_ODM/OEM/OBM的区别
  11. 可以多项目协同的项目管理软件
  12. 京东大数据方向-Java方向-实习面经一面二面(offer没去。。。)
  13. Electron中使用bytenode加密
  14. 回溯法求最佳工作分配方案
  15. 数组-接口2-参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数;预期结果是一个整型数组
  16. 光盘属于计算机软件,计算机基础知识光盘的概念
  17. 用友NC资产管理解决方案助机场行业盘活增效
  18. jar文件运行时 Failed to load Main-Class manifest attribute from
  19. 福禄克铜缆测试参数:近端串扰和远端串扰参数之间的区别
  20. 「IOS 网络踩坑」错误 Error Domain=NSURLErrorDomain Code=-1004

热门文章

  1. 开始Windows Embedded Compact 7的第一个项目――虚拟机上的CEPC
  2. 基于asp.net企业门户网站设计
  3. 2020iPadAir(第四代)对比iPadPro(第二代)
  4. kafka消息消费有延迟_简易实现kafka延迟消息
  5. USB简单介绍USB共享网络功能(一)
  6. andriod游戏音效
  7. 一名开源拓荒者的 Apache 之旅
  8. 搭建网站教程 小白教程 游戏搭建制作教程
  9. erdas叠加显示_ERDAS影像融合
  10. mySQL 事物提交成功不等于数据保存成功