如何在python中导入双扩展名文件

如何在python中导入双扩展名文件,python,python-import,Python,Python Import,我有一个python文件,名为 default.properties.py 如何才能成功地将其作为模块导入,我尝试了 import default.properties as prop 但是,直到我将名称更改为default.py,它才起作用,我想保留带有两个扩展名的名称,这可能吗?您可以使用imp import imp mymodule = imp.load_source('default.properties','default.properties.py') >>>m

我有一个python文件,名为

default.properties.py
如何才能成功地将其作为模块导入,我尝试了

import default.properties as prop

但是,直到我将名称更改为default.py,它才起作用,我想保留带有两个扩展名的名称,这可能吗?

您可以使用
imp

import imp
mymodule = imp.load_source('default.properties','default.properties.py')
>>>mymodule.variable
"i am variable in default.properties.py"

mymodule = imp.load_module('default.properties',
                            open('default.properties.py'),
                            os.path.abspath('default.properties.py'),
                            ('.py', 'r', imp.PY_SOURCE))
>>>mymodule.variable
"i am variable in default.properties.py"    

文件名只能有一个扩展名。您的文件具有扩展名
py
。基本名称为
default.properties

你想写作吗

import default.properties
这是可能的,但它要求您设置一个名为
的默认值
,以及该包的一个子模块名为
属性

请注意,这涉及到创建一个名为
的默认目录
,其中包含名为
\uuu init\uuuuuuuuuuupy
属性.py
的文件

不能使用import语句导入基名称包含句点的文件中的模块。这是因为文件的基名称必须是有效的Python标识符

换句话说,您不能将文件命名为
default.properties.py
,但可以使用包机制来允许您编写

import default.properties

请参阅命名约定,强烈建议不要在文件名中使用句点,而应使用下划线。我理解如果这是其他人的模块,您别无选择,只是在Python 3.1中的未来参考,它是
mymodule=importlib.machine.SourceFileLoader('default.properties','default.properties.py')。load_module()
。在Python 3.4中,
load_module()
被弃用。