【问题标题】:Python 3.5: Importing a specific function from a file with a space in its namePython 3.5:从名称中带有空格的文件中导入特定函数
【发布时间】:2019-01-25 04:14:04
【问题描述】:

我正在尝试从标题中有空格的 .py 文件中仅导入一个函数。由于外部限制,我无法重命名文件。

我的第一次尝试是:

from File 1 import my_func

但这得到了一个 SyntaxError。根据其他 StackOverflow 的建议,我找到了从模块/文件导入所有函数的方法:

V1:

exec(open("File 1.py").read())

V2:

globals().update(vars(__import__('File 1')))

但是,我只想导入 my_func。我也更愿意在不使用 importlib 等其他模块的情况下执行此操作。非常感谢任何帮助,我仍在学习!

【问题讨论】:

    标签: python import whitespace python-import


    【解决方案1】:

    根据要求编辑答案:
    来源:How do you import a file in python with spaces in the name?

    不使用 importlib 从名称中有空格的模块中导入单个函数是根本不可能的,因为你唯一的武器是__import__

    您唯一的选择是导入整个模块并只保留您喜欢的功能。但它仍会导入整个模块

    重要提示

    强烈建议去掉模块名称中的空格和其他非字母数字符号。

    示例

    文件 1.py

    def foo():
        print("Foonction.")
    
    def spam():
        print("Get out!")
    

    main.py

    globals()["foo"] = getattr(__import__("File 1"),"foo")
    

    【讨论】:

    • 感谢您的评论。这是真实场景的简化示例。 (它实际上并不称为文件 1!)。我阅读了提供的链接,但它没有回答最初的问题,请问我可以提供更多帮助吗?
    • @JimmyCarlos 尽管模块的真实名称可能是明智的,但在文件名中保留非字母数字字符是不明智的。你永远不应该被外部约束以错误的方式做事。尝试将政策更改为驼峰式或下划线。 ModuleNamemodule_name 是这里唯一的正确方法。
    猜你喜欢
    • 2012-02-25
    • 2017-01-25
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多