Как вы импортируете файл в Python с пробелами в имени? - PullRequest
31 голосов
/ 03 февраля 2012

Нужно ли убрать все пробелы в имени файла, чтобы импортировать его, или есть какой-то способ сообщить import, что есть пробелы?

Ответы [ 3 ]

42 голосов
/ 03 февраля 2012

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

Если вам действительно нужно сделать это по какой-то причине, вы можете использовать функцию __import__:

foo_bar = __import__("foo bar")

Это импортирует foo bar.py как foo_bar.Это немного отличается от оператора import, и вам следует его избегать.

8 голосов
/ 10 апреля 2013

Если вы хотите сделать что-то вроде from foo_bar import * (но с пробелом вместо подчеркивания), вы можете использовать execfile (документы здесь ):

execfile("foo bar.py")

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

0 голосов
/ 09 декабря 2016

Вы также можете использовать функцию importlib.import_module, которая является оберткой вокруг __import__.

foo_bar_mod = importlib.import_module("foo bar")

или

foo_bar_mod = importlib.import_module("path.to.foo bar")

Подробнее: https://docs.python.org/2/library/importlib.html

...