项目具有以下结构:
modulename
├── __init__.py
│
├── one
│ ├── function_1.py
│ ├── function2.py
│ └─── __init__.py
│
└── two
├── another_function.py
├── yet_another_function.py
└─── __init__.py
每个.py
(除了__init__.py
除外)都包含以下内容:
def foo(x):
return x
def bar(x):
return x + 2
要使用该模块,请按以下方式将其导入:import modulename.one.function1.foo
。我想要做的是在倒数第二位找到所有.py
个文件名,例如function1
或another_function
。
到目前为止,建议的解决方案未能成功:
dir(modulename.one)
会产生['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
。
help(modulename.one)
实际上包含标题PACKAGE CONTENTS
下的函数文件名称。如何获取PACKAGE CONTENTS
?
编辑:我可以(正如有人建议的那样)在__all__
中使用__init__.py
,但我更喜欢简单的内置函数或模块。
答案 0 :(得分:0)
我认为您要找的是包__all__
文件中的__init__
定义。
您可以查看:http://mikegrouchy.com/blog/2012/05/be-pythonic-__init__py.html
解释了包中的__all__
行为。