为了账号安全,请及时绑定邮箱和手机立即绑定

在python中,如何导入文件名以数字开头

/ 猿问

在python中,如何导入文件名以数字开头

一只萌萌小番薯 2019-11-14 14:40:33

基本上有一个名为的文件8puzzle.py,我想将该文件导入另一个文件(在同一文件夹中,因为提供了该文件,所以无法更改文件名)。无论如何,在Python中可以做到这一点吗?我尝试了通常的方式from 8puzzle import *,这给了我一个错误。


错误是:


>>> import 8puzzle

  File "<input>", line 1

    import 8puzzle

           ^

SyntaxError: invalid syntax

>>> 


查看完整描述

3 回答

?
大话西游666

你可以做


puzzle = __import__('8puzzle')

非常有趣的问题。我会记住不要用数字命名。


如果您愿意import *-您应该查看此问题和答案。


查看完整回答
反对 回复 2019-11-14
?
侃侃无极

上面的答案是正确的,但是到目前为止,推荐的方法是使用import_modulefunction:


importlib.import_module(name, package=None)

导入模块。name参数以绝对或相对术语(例如pkg.mod或..mod)指定要导入的模块。如果名称是用相对术语指定的,则必须将package参数设置为要用作解析包名称的定位符的包的名称(例如,import_module('..mod', 'pkg.subpkg')import pkg.mod)。


import_module()函数充当的简化包装 importlib.__import__()。这意味着该函数的所有语义均源自importlib.__import__()。这两个函数之间最重要的区别在于,它import_module()返回指定的程序包或模块(例如pkg.mod),而__import__()返回顶级程序包或模块(例如pkg)。


如果要动态导入自解释程序开始执行以来创建的模块(例如,创建了Python源文件),则可能需要调用invalidate_caches()以便导入系统注意到新模块。


__import__ 现在不推荐。


importlib.__import__(name, globals=None, locals=None, fromlist=(), level=0)

内置__import__()功能的实现。


注意应该以编程方式导入模块,import_module()而不要使用此功能。


查看完整回答
反对 回复 2019-11-14
?
互换的青春

不要.py在导入中使用扩展名。


有from 8puzzle import *工作吗?


就其价值而言,from x import *不是首选的Python模式,因为它会将模块的命名空间渗入当前上下文中。


通常,尝试从该模块导入您特别想要的东西。可以从其他模块导入任何全局变量。


例如,如果可以的8puzzle.foo话,可以从8puzzle导入


编辑:

虽然我的.py信息是正确的,但这还不够。


另一个张贴者的__import__('8puzzle')建议是正确的。但是,我强烈建议您避免使用此模式。


首先,它保留了内部私有Python方法。 您基本上打破了能够导入模块意味着什么的基本假设。 只需将文件重命名为其他名称即可puzzle8解决此问题。


这将使经验丰富的Python程序员感到沮丧,他们希望知道您的进口商品是最高的,并希望代码(尝试)符合PEP8。


分享编辑


查看完整回答
反对 回复 2019-11-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信