Comment importer un fichier en python, avec des espaces dans le nom?

Dois-Je tous les espaces dans le nom de fichier à importer, ou est-il une façon de dire import qu'il y a des espaces?

28
demandé sur Jeffrey Scofield 2012-02-03 08:04:15

3 réponses

vous devriez enlever les espaces du nom du fichier. Parce que le nom du fichier est utilisé comme identifiant pour les modules importés (i.e. foo.py va être importés en tant que foo) et les identificateurs Python ne peuvent pas avoir d'espaces, ce n'est pas supporté par le import déclaration.

Si vous vraiment besoin de faire cela pour une raison quelconque, vous pouvez utiliser le __import__ fonction:

foo_bar = __import__("foo bar")

ceci importera foo bar.pyfoo_bar. Cela se comporte un peu différent de la import déclaration et vous devriez éviter.

37
répondu Jeremy Banks 2012-02-03 04:08:51

Si vous voulez faire quelque chose comme from foo_bar import * (mais avec un espace au lieu d'un underscore), vous pouvez utiliser execfile (docs ici):

execfile("foo bar.py")

bien qu'il soit préférable d'éviter les espaces dans les noms de fichiers source.

7
répondu drevicko 2013-04-10 05:56:56

vous pouvez aussi utiliser importlib.import_module fonction, qui est un wrapper autour de __import__.

foo_bar_mod = importlib.import_module("foo bar")

ou

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

Plus d'info: https://docs.python.org/2/library/importlib.html

0
répondu TBirkulosis 2016-12-08 22:41:39