В python, как импортировать имя файла начинается с числа
В основном есть файл под названием 8puzzle.py
и я хочу, чтобы импортировать файл в другой файл (в той же папке и я не могу изменить имя файла, как файл прилагается). Есть ли возможность сделать это в Python? Я пробовал обычным способом from 8puzzle import *
, это дает мне ошибку.
ошибка:
>>> import 8puzzle
File "<input>", line 1
import 8puzzle
^
SyntaxError: invalid syntax
>>>
3 ответа:
вы могли бы сделать
puzzle = __import__('8puzzle')
очень интересная проблема. Я не забуду назвать что-нибудь с номером.
Если вы хотите
import *
-- вы должны проверить этот вопрос и ответ.
приведенные выше ответы верны, но на данный момент рекомендуется использовать
import_module
функция:
importlib.import_module(name, package=None)
Импорт модуля. Имя аргумент указывает, какой модуль импортировать в абсолютном или относительном выражении (например, либоpkg.mod
или..mod
). Если имя указано в относительном условия, то аргумент пакета должен быть установлен на имя пакет, который должен выступать в качестве якоря для разрешения имя пакета (например,import_module('..mod', 'pkg.subpkg')
импортpkg.mod
).функция import_module() действует как упрощающая оболочка вокруг
importlib.__import__()
. Это означает, что все семантики функции являются производное отimportlib.__import__()
. Самое главное отличие между этими двумя функциями находится то, чтоimport_module()
возвращает указанный пакет или модуль (напримерpkg.mod
), а__import__()
возвращает пакет или модуль верхнего уровня (напримерpkg
).если вы динамически импортировать модуль, который был создан с интерпретатор начал выполнение (например, создал исходный файл Python), вы может понадобиться позвонить
invalidate_caches()
для того, чтобы новый модуль замечено системой импорта.
__import__
сейчас не рекомендуется.
importlib.__import__(name, globals=None, locals=None, fromlist=(), level=0)
Реализация встроенного
Не используйте
.py
расширение в вашем импорте.тут
from 8puzzle import *
работы?чего бы это ни стоило,
from x import *
не является предпочтительным шаблоном Python, так как он пропускает пространство имен этого модуля в ваш текущий контекст.в общем, попробуйте импортировать вещи, которые вы специально хотите из этого модуля. Любой глобальный из другого модуля может быть импортирован.
например, если у вас есть
8puzzle.foo
вы могли бы сделать ' от импорта 8puzzleEdit:
пока моя
.py
сообщение правильно, этого недостаточно.другой плакат
__import__('8puzzle')
предложение правильное. Однако,я настоятельно рекомендую избегать этот шаблон.для одного из них зарезервирован внутренний, частный метод Python. вы в основном нарушаете фундаментальные предположения о том, что значит иметь возможность импортировать модуль. просто переименование файла на что-то другое, например
puzzle8
, исправит это.это расстроит ад из опытных программистов Python, которые ожидают знать, что ваш импорт находится на вершине и ожидают, что код (пытается) соответствовать PEP8.