2021-3-19 search func

import tkinter
import sys
import importlib
import inspect
import glob
import os
import tkinter.test.test_ttk.test_widgets
import gui_widget.time_select

print(sys.modules.keys())

# tkinter_package = importlib.import_module(‘tkinter’)

# print(tkinter_package.doc)

module_list = dir(tkinter)

print(module_list)

path_parent = ‘D:\python\excel\gui_widget’

# ***********************************

path_parent = r’D:\python\excel\tkinter’

sys.path.append(path_parent)

os.chdir(path_parent)

file_list = glob.glob(r’**/*.py’, recursive=True)

for file_name in file_list:

if ‘init’ in file_name:

continue

file_name = os.path.normpath(file_name)

path_split = file_name.split(os.sep)

path_split[-1] = os.path.splitext(path_split[-1])[0]

module_name = ‘.’.join(path_split)

print(‘file_name’, file_name)

print(‘module_name’, module_name)

try:

module = importlib.import_module(module_name)

print(’************************’, module_name, inspect.ismodule(module))

except Exception as err:

print(err)

file_path = inspect.getmodulename()

func_list_all = []

def get_fun_list(obj, step=1, src=‘gui_widget’):
if step > 100:
return
module_list = inspect.getmembers(obj, lambda x: inspect.ismodule(x))
class_list = inspect.getmembers(obj, lambda x: inspect.isclass(x))
func_list = inspect.getmembers(obj, lambda x: inspect.isfunction(x))
func_list_all.extend(func_list)
module_class = module_list + class_list
print(‘func_list_all’, step, ‘len’, len(func_list_all), ‘obj’, obj, ‘list’, func_list_all)
for obj_p in module_class:
try:
abs_p = inspect.getabsfile(obj_p[1])
if src not in abs_p:
continue
print(‘abs_p’, abs_p)
except Exception:
continue
print(‘obj_p’, obj_p)
get_fun_list(obj_p[1], step + 1)

print('module_class', step, module_class)
# print('getmembers', inspect.getmembers(obj))

def filter_func(func_list, special_tag=’’):
func_new = dict()
for func_info in func_list:
print(‘func_info’, func_info)
func_name = func_info[0]
if func_name.startswith(’_’):
continue

    print(33, func_info)
    func_obj = func_info[1]
    doc_string = func_obj.__doc__
    if special_tag and special_tag not in doc_string:
        continue

    if func_name in func_new:
        print("ERR duplicate", func_name, func_info, 'his', func_new[func_name])
    func_new[func_name] = func_obj

print(func_list)

get_fun_list(gui_widget.time_select)

get_fun_list(gui_widget)
for func in func_list_all:
print(‘func’, func)
print(‘func_list_all’, func_list_all)

filter_func(func_list_all)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值