【问题标题】:Python, dynamically invoke scriptPython,动态调用脚本
【发布时间】:2010-03-06 02:12:23
【问题描述】:

我想从另一个脚本中运行一个 python 脚本。我的意思是子脚本的任何状态更改都会影响父状态。因此,如果在子级中设置了一个变量,它会在父级中更改。

通常你可以做类似的事情

import module

但问题在于,正在运行的子脚本是父脚本的参数,我认为您不能将 import 与变量一起使用

类似的东西

$python run.py child.py

这将是我期望发生的事情

#run.py

#insert magic to run argv[1]
print a

#child.py
a = 1

$python run.py child.py
1

【问题讨论】:

    标签: python command


    【解决方案1】:

    虽然__import__ 肯定会执行指定的文件,但它也会将其存储在python 模块列表中。如果要重新执行同一个文件,则必须重新加载。

    您还可以查看 python exec 语句,它可能更适合您的需求。

    来自 Python 文档:

    此语句支持 Python 代码的动态执行。第一个表达式的计算结果应为字符串、打开的文件对象或代码对象。

    【讨论】:

    【解决方案2】:

    您可以使用__import__ 函数来动态导入模块:

    module = __import__(sys.argv[1])
    

    (您可能需要删除结尾的.py 或不在命令行中指定它。)

    来自 Python 文档:

    直接使用__import__() 的情况很少见,除非您想导入一个名称仅在运行时才知道的模块。

    【讨论】:

    • 谢谢格雷。如果 python 文件位于脚本以外的另一个目录中,如果您可以展示如何执行此操作,则可以加分
    • @Mike:当然,修改sys.path,可能是这样的:sys.path.append("/your/module/directory")
    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2015-08-05
    • 2014-06-25
    • 2018-03-25
    相关资源
    最近更新 更多