【发布时间】:2021-03-25 11:08:54
【问题描述】:
我使用 for 循环在许多模块上运行 _file_ 函数,而对于某些模块,我得到了 None。我看到没有 _init_ 文件的文件可能会发生这种情况,但我无法将 _init_ 文件添加给那些没有的文件,因为文件很多。
是否有任何其他选项可以获取相同的数据,而不是使用 _file_ 所以我不会得到 None?
【问题讨论】:
标签: python file import module nonetype
我使用 for 循环在许多模块上运行 _file_ 函数,而对于某些模块,我得到了 None。我看到没有 _init_ 文件的文件可能会发生这种情况,但我无法将 _init_ 文件添加给那些没有的文件,因为文件很多。
是否有任何其他选项可以获取相同的数据,而不是使用 _file_ 所以我不会得到 None?
【问题讨论】:
标签: python file import module nonetype
这个答案可能会帮助你https://stackoverflow.com/a/9271617/4498470
设置__file__ = None 的模块可能是用C 编写的模块。它们是静态链接的。或者可能导入系统已经从数据库加载到模块中,因此没有“文件”指向。
我会说如果没有设置__file__ 属性,除非它是一个错误,这可能是因为该属性对于特定模块没有意义。
Python 的导入系统相当复杂。你可以在这里阅读__file__ https://docs.python.org/3.8/reference/import.html?highlight=__file__#import-related-module-attributes 等属性。
因此,“是否有任何其他选项可以获取相同的数据,而不是使用 file 所以我不会得到 None”的答案可能是否定的。(至少对于 C Python)。
【讨论】: