2015-04-08 3 views
3

У меня есть файл питона под названиемКак импортировать двойные файлы расширения в Python

default.properties.py 

Как я могу успешно импортировать его как модуль, я попытался

import default.properties as prop 

но не работал до тех пор, Я изменил имя на default.py, Id, как сохранить имя с двумя расширениями, возможно ли это?

+0

См [здесь] (http://stackoverflow.com/questions/1828127/how-to-reference-python-package-when-filename-contains-a-period) – kvorobiev

+1

Соглашения об именах настоятельно рекомендуют использовать периоды в имени файла, вместо этого следует использовать подчеркивания. я понимаю, если это чужой модуль, который у вас не было выбора, просто будущая ссылка –

ответ

3

Вы можете использовать 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"  
+0

это работает, но я бы хотел использовать прямой импорт. – user2798694

+0

В Python 3.1 это 'mymodule = importlib.machinery.SourceFileLoader ('default.properties', 'default.properties.py'). load_module() '. В Python 3.4 функция load_module() 'устарела. –

0

имена файлов могут иметь только одно расширение. В вашем файле есть расширение py. Основное имя - default.properties.

Вы хотите написать

import default.properties 

Это возможно, но это требует, чтобы вы сделали package именем default и подмодуль этого пакета с именем properties.

Обратите внимание, что это связано с созданием каталога с именем default, содержащим файлы с именем __init__.py и properties.py.

Вы не можете импортировать, используя оператор import, модуль в файл, базовое имя которого содержит период. Это связано с тем, что базовое имя файла должно быть допустимым идентификатором Python.

Другими словами, вы не можете назвать файл default.properties.py, но вы можете использовать механизм пакета, чтобы позволить вам написать

import default.properties