2012-02-03 2 views
23

Do I Должны ли вынуть все пробелы в имени файла, чтобы импортировать его, или есть способ сообщить import, что есть пробелы?Как вы импортируете файл в python с пробелами в имени?

+0

Не могли бы вы показать код, пожалуйста? Обычно Python не имеет проблем с пробелами в именах файлов. (О, подождите, если вы не говорите об операторе 'import', и в этом случае Python не поддерживает пробелы в именах модулей.) –

ответ

29

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

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

foo_bar = __import__("foo bar") 

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

7

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

execfile("foo bar.py") 

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

0

Вы также можете использовать функцию 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

Смежные вопросы