程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用字符串作为名称导入文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用字符串作为名称导入文件?

开发过程中遇到使用字符串作为名称导入文件的问题如何解决?下面主要结合日常开发的经验,给出你关于使用字符串作为名称导入文件的解决方法建议,希望对你解决使用字符串作为名称导入文件有所启发或帮助;

不知道我是否正确理解了所有内容,但是可以使用__import__以下命令动态导入模块:

@H_764_3@mod = __import__(testName)
mod.HelloWorld()

:我不知道__import__python文档不建议使用用户代码(如Bakuriu所述)

这也应该起作用,并且将被认为是更好的样式:

import importlib

mod = importlib.import_module(testName)
mod.HelloWorld()

解决方法

我打算在不久的将来制作一组文件,而组织它的最佳方法是有一个列表,该列表将位于文件的最顶部,之后将要处理大量的代码。该列表控制什么以及如何操作。我只想写一次上述列表,并且该列表是以下格式的文件夹和文件名的列表:

[(folder/filename,bool,int),(folder/filename,int)]

如您所见,folder/filename它们是相同的(有点)。文件名.py末尾是文件夹名,但是导入XXX并不需要导入XXX.py,因此我看不到这会引起问题。

我面临的问题是使用这种方法导入&Hellip;

for (testName,auto,hardware,bit) in testList:
    print(testName)
    paths = "\\" + testName
    print paths
    addpath(paths)
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print("Path Added")
    test = testName + ".Helloworld()"
    eval(test)

因此,对于我进行的每个测试,请打印名称,组装一个包含路径("\\testName")的字符串,在本例中,打印测试路径,然后将该路径添加到列表(sys.path.append(path)),然后打印以确认它发生了,然后组装一个eval测试主模块将执行的字符串,并最终对其进行评估。

如您所见,我目前必须在顶部列出一个导入列表。我不能简单地进行导入testName(的内容testName是我要导入的模块的名称),因为它将尝试找到一个名为的模块testName,而不是一个名为内容的模块testName

我已经看到了一些完成此操作的示例,但是找不到适合我的情况的任何示例。如果有人可以从字面上抛出一大堆代码,那将是很棒的。

我还要求我不要因为使用eval而被悬挂,绘制或固定,它在一个受严格控制的环境中使用(它循环通过的列表在.py文件中,因此“最终用户”不应搞砸了)。

大佬总结

以上是大佬教程为你收集整理的使用字符串作为名称导入文件全部内容,希望文章能够帮你解决使用字符串作为名称导入文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。