В python, как импортировать имя файла начинается с числа


В основном есть файл под названием 8puzzle.py и я хочу, чтобы импортировать файл в другой файл (в той же папке и я не могу изменить имя файла, как файл прилагается). Есть ли возможность сделать это в Python? Я пробовал обычным способом from 8puzzle import *, это дает мне ошибку.

ошибка:

>>> import 8puzzle
  File "<input>", line 1
    import 8puzzle
           ^
SyntaxError: invalid syntax
>>> 
3 54

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 вы могли бы сделать ' от импорта 8puzzle

Edit:

пока моя .py сообщение правильно, этого недостаточно.

другой плакат __import__('8puzzle') предложение правильное. Однако,я настоятельно рекомендую избегать этот шаблон.

для одного из них зарезервирован внутренний, частный метод Python. вы в основном нарушаете фундаментальные предположения о том, что значит иметь возможность импортировать модуль. просто переименование файла на что-то другое, например puzzle8, исправит это.

это расстроит ад из опытных программистов Python, которые ожидают знать, что ваш импорт находится на вершине и ожидают, что код (пытается) соответствовать PEP8.