如何在python中导入名称中带有空格的文件?

如何在python中导入名称中带有空格的文件?,python,import,filenames,spaces,Python,Import,Filenames,Spaces,导入文件名时,我是否必须去掉文件名中的所有空格,或者是否有某种方法告诉import有空格?您应该去掉文件名中的空格。由于文件名用作导入模块的标识符(即,foo.py将作为foo导入),并且Python标识符不能有空格,import语句不支持这种情况 如果出于某种原因确实需要执行此操作,可以使用\uuuu导入\uuu功能: foo_bar = __import__("foo bar") 这将导入foo bar.py作为foo\u bar。这与import语句的行为稍有不同,您应该避免使用它。如果

导入文件名时,我是否必须去掉文件名中的所有空格,或者是否有某种方法告诉
import
有空格?

您应该去掉文件名中的空格。由于文件名用作导入模块的标识符(即,
foo.py
将作为
foo
导入),并且Python标识符不能有空格,
import
语句不支持这种情况

如果出于某种原因确实需要执行此操作,可以使用
\uuuu导入\uuu
功能:

foo_bar = __import__("foo bar")

这将导入
foo bar.py
作为
foo\u bar
。这与
import
语句的行为稍有不同,您应该避免使用它。

如果您想从foo\u bar import*执行类似
的操作(但使用空格而不是下划线),可以使用execfile(文档):


虽然在源文件名中避免空格是更好的做法。

您也可以使用
importlib.import\u module
函数,它是
\uu import\uu
的包装器

foo_bar_mod = importlib.import_module("foo bar")


更多信息:

要添加到Banks的答案中,如果您正在导入另一个文件,而该文件没有保存在Python检查导入目录的目录中,则需要使用

import sys
sys.path.append("absolute/filepath/of/parent/directory/of/foo/bar")
打电话之前

foo_bar = __import__("foo bar")

如果使用
import
导入它,Python将检查模块的当前目录,则不必执行此操作。例如,如果要从同一目录导入模块,请使用

import os,sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
foo_bar = __import__('foo_bar')

希望这可以避免其他人尝试导入自己的命名奇怪的文件或他们在某个时候手动下载的Python文件:)

请显示一些代码好吗?通常Python对文件名中的空格没有问题。(哦,等等,除非您谈论的是
import
语句,在这种情况下,Python不支持模块名称中的空格。)只需补充一点,在Python3中,这将不会为模块创建名称空间
foo_bar = __import__("foo bar")
foo_bar = importlib.import_module("foo bar")
import os,sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
foo_bar = __import__('foo_bar')