在扩展名之前导入带有标点符号的.py文件

时间:2014-08-13 21:11:27

标签: python

这是一个相对简单的问题。

目前,我正在尝试导入其他python文件,并且知道代码对于同一目录中的文件非常简单。

据我所知,它只是:

  

导入文件名

然而,我的一些文件中有标点符号,例如' 4.1'或者' 4-1'。无论如何都要按原样导入文件,还是需要更改文件名?

目前我正在运行python 3,但我的班级正在使用python 2

提前非常感谢你!

2 个答案:

答案 0 :(得分:2)

如果文件名中没有额外的点,那么importlib就可以了。例如,假设您有文件名4-1.py

import importlib
my_module = importlib.import_module('4-1')

您仍然必须将模块对象绑定到valid python identifier的名称,即使my_module.__name__属性本身并没有实际限制。

如果文件名中有更多的点,则情况更棘手,因为点向Python的导入系统指示您在package内具有子模块结构。尽管如此,仍然可以使用importlib加载此类文件,import imp my_module = imp.load_source('my_module', 'strange.name-1.py') 的前身:

importlib
在运行时将模块名称存储在字符串变量中时,使用

{{1}}是很正常的。例如,您可以使用它来确保模块名称集合与某些外部数据源的一致性,其中名称不受您的控制。但是,使用它只是为了解决具有您控制范围内的奇怪文件名的问题 - 最好只是重命名文件。

答案 1 :(得分:0)

您无法使用import语句导入包含符号的名称,但始终可以使用内置的__import__

module = __import__("strange-name-1")

import创建变量。它只能使用有效的变量标识符。使用__import__,您自己分配一个不同的名称,并可以使用字符串引用目标模块。

此外,importlib.import_module()函数的功能不如__import__,但是此用例的有效替代方法。