python脚本名_python获取类名函数名、脚本路径
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获取类名函数名、脚本路径相关推荐
- Java中获取当前函数名
Java中获取当前函数名 博客分类: Java JavathreadJDKIDEA 有时候我们需要在程序中获取当前运行的函数名,如何简单的做到这点呢?我们可以用getStackTrace轻松搞定. ...
- java 获取当前方法的名称_Java中获取当前函数名
有时候我们需要在程序中获取当前运行的函数名,如何简单的做到这点呢?我们可以用getStackTrace轻松搞定. 一提到getStatckTrace多数人会联想到Thowable中的getStackT ...
- python找最大值的函数_Python 获取最大值函数
Python 获取最大值函数 以下实例中我们使用max()方法求最大值:# -*- coding: UTF-8 -*- # Filename : test.py # 最简单的 print(max(1, ...
- python函数名是变量_Python 变量做函数名的简单示例
这篇文章主要为大家详细介绍了Python 变量做函数名的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! PHP ...
- python匿名函数调用_python之内置函数,匿名函数
内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...
- python return返回值格式化_day11__函数名的应用,python新特f-strings格式化输出、迭代器...
一.函数名的应用 函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值:但是作为函数名他也有特殊的功能就是加上()就会执行对应的函数,所以我们可以把函数名 ...
- python递归函数公式_python之内置函数,匿名函数,递归函数
一. 内置函函数 什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就 ...
- python入门函数编程_Python入门——面向函数的编程,过程
第一部分 函数的定义及调用 1.1 为什么要用函数 提高代码复用性--抽象出来,封装为函数 将复杂的大问题分解成一系列小问题,分而治之--模块化设计的思想 利于代码的维护和管理 1.2 函数的定义及调 ...
- python map用法_Python中 map()函数的用法详解
python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...
最新文章
- Buttomsheetdialog的简单实用
- micropython文件上传软件_ESP32玩转MicroPython(二) 连接WIFI网络 webperl文件传输
- HIBERNATE 持久化基础
- 回流Reflow和重绘Repaint
- 基于机器视觉的散热器钎焊缺陷检测系统研发
- mysql gis vs postgis_mysql空间扩展VSPostGIS
- PHP SOCKET SERVER 二
- 12,三维Panel
- 人工智能现状和发展趋势
- cmt obm odm 代工模式oem_ODM/OEM/OBM的区别
- 可以多项目协同的项目管理软件
- 京东大数据方向-Java方向-实习面经一面二面(offer没去。。。)
- Electron中使用bytenode加密
- 回溯法求最佳工作分配方案
- 数组-接口2-参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数;预期结果是一个整型数组
- 光盘属于计算机软件,计算机基础知识光盘的概念
- 用友NC资产管理解决方案助机场行业盘活增效
- jar文件运行时 Failed to load Main-Class manifest attribute from
- 福禄克铜缆测试参数:近端串扰和远端串扰参数之间的区别
- 「IOS 网络踩坑」错误 Error Domain=NSURLErrorDomain Code=-1004