如果文件名或文件路径包含非alpha、非下划线字符,如何在python中导入?

如果文件名或文件路径包含非alpha、非下划线字符,如何在python中导入?,python,import,special-characters,Python,Import,Special Characters,我需要从文件夹中的文件导入一个函数,该文件夹的名称包含一个特殊字符,而文件本身也包含一个特殊字符。我无法更改名称以更正此问题。在这种情况下,如何执行导入?是的,这是一个可怕的命名,但这应该适用于您: Instrument_Control = __import__("Instrument-Control.audio$pecial") audiospecial = getattr(Instrument_Control, "audio$pecial") print audiospecial # <

我需要从文件夹中的文件导入一个函数,该文件夹的名称包含一个特殊字符,而文件本身也包含一个特殊字符。我无法更改名称以更正此问题。在这种情况下,如何执行导入?

是的,这是一个可怕的命名,但这应该适用于您:

Instrument_Control = __import__("Instrument-Control.audio$pecial")
audiospecial = getattr(Instrument_Control, "audio$pecial")
print audiospecial
# <module 'Instrument-Control.audio$pecial' from 'Instrument-Control/audio$pecial/__init__.py'>
audiospecial.example_func()  # executes example_func() from audio$pecial
Instrument\u Control=\uuuuu import\uuuuuu(“Instrument Control.audio$pecial”)
audiospecial=getattr(仪器控制,“音频$Special”)
打印音频特辑
# 
audiospecial.example_func()#从audio$pecial执行example_func()

在这种情况下,文件路径通过一个名为“Instrument Control”的文件夹,文件名为“audio$Special”。这些不是我做的,但我必须使用它们,而且我不能更改名称。我希望问题是一般性的,所以我没有将此信息放在主请求中。请不要“杀死做这件事的人”评论。您可以尝试使用
audiospecial=\uuuuu导入(“Instrument Control.audio$pecial”)
,但我不知道这是否有效。试着直截了当地斥责决定命名的人。“我必须使用它们,而且我不能更改名称。”错。只需更改名称并继续。如果使用Python2.7(或3.1+),则使用
importlib.import\u模块
而不是
\uuu import\uuu
可以简化这一点。前两行将替换为
audiospecial=importlib.import\u模块(“仪表控制.音频$special”)
@ncoghlan我得到了“ImportError:不支持按文件名导入”。对于importlib.import\u模块('youtube-dl/youtube\u dl'),它与importlib.import\u模块('youtube\u dl','youtube-dl')一起工作第一个版本可能与
importlib.import\u模块('youtube-dl.youtube\u dl')
一起使用(将
/
替换为
)。