当Python文件打开以便通过
进行阅读时read_file = open(input_file, "r"))
如何从open python文件中找到函数名称并打印出来?
答案 0 :(得分:0)
使用dir()
:
不带参数,返回当前本地范围内的名称列表。使用参数,尝试返回该对象的有效属性列表。
>>> read_file = open('test.txt', 'r')
>>> dir(read_file)
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
答案 1 :(得分:0)
ast
救援!
import ast
with open('somefile.py', 'r') as fin:
source = fin.read()
tree = ast.parse(source)
class FuncFinder(ast.NodeVisitor):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.function_names = []
def visit_FunctionDef(self, node):
self.function_names.append(node.name)
self.generic_visit(node)
finder = FuncFinder()
finder.visit(tree)
print(finder.function_names)
复制/粘贴工作演示:
source = """
def foo():
pass
def bar():
pass
class FooBar(object):
def __init__(self):
pass
"""
import ast
tree = ast.parse(source)
class FuncFinder(ast.NodeVisitor):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.function_names = []
def visit_FunctionDef(self, node):
self.function_names.append(node.name)
self.generic_visit(node)
finder = FuncFinder()
finder.visit(tree)
print(finder.function_names) # ['foo', 'bar', '__init__']
请注意,我们得到所有函数名称(包括类中的函数名称,嵌套在其他函数内部等)。您可以通过添加def visit_ClassDef(self, node): pass
...