Python从py模块读取所有导入语句的简单方法
我正在尝试创建一个辅助函数来读取文件并模拟单元测试的所有导入。我必须读取文件与导入,因为我在 python 路径上没有这些东西。
示例代码:
#module.py
import com.stackoverflow.question
from com.stackoverflow.util import test_func
from com.stackoverflow.util import TestClass
#magic helper: what i want
magic = process('<path_to>/module.py')
for module in magic.modules_as_strings():
#todo would have to recuirsively add each path
# so i would first create com, then com.stackoverflow, etc
setattr(self, module, StubModules(module)
for obj in magic.sink:
#these would be "from" from x import Y
#its basically just creating self.Y = object
setattr(self, object)
上面是模拟代码,我真的在寻找将文件标记为“from/import 语句”的最佳方法,
这有意义吗?我知道我可以逐行读取文件,但我希望有一种更干净/简洁的方式。
如果您有任何疑问,请告诉我。
I am trying to create a helper function to read a file and mock out all imports for a unit test. I have to read the file vs import since i dont have those things on python path.
Example code:
#module.py
import com.stackoverflow.question
from com.stackoverflow.util import test_func
from com.stackoverflow.util import TestClass
#magic helper: what i want
magic = process('<path_to>/module.py')
for module in magic.modules_as_strings():
#todo would have to recuirsively add each path
# so i would first create com, then com.stackoverflow, etc
setattr(self, module, StubModules(module)
for obj in magic.sink:
#these would be "from" from x import Y
#its basically just creating self.Y = object
setattr(self, object)
Above is the mock code, I am really looking for the best way to just tokenize the file for "from/import statements"
That make sense? I know I could read the file line by line, but I was hoping for a cleaner/concise way.
Let me know if you have any questions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 AST 模块,非常简单:
对于这样的模块:
输出是:
Using the AST module, it is pretty easy:
For a module like this:
The output is: