使用IF __name__ ==“ __main__”语句从另一个python脚本运行python脚本

彼得·范沃登

我有一个LCP_02.py带if语句的脚本

if __name__ == "__testcase__" or __name__ == "__main__":

    ask_costsurfacepath_path()
    ask_outputpath_path()
    CostSurfacefn = config.costsurfacepath
    startCoord = (config.startX,config.startY)
    stopCoord = (config.stopX,config.stopY)
    outputPathfn = config.outputpath
    main(CostSurfacefn,outputPathfn,startCoord,stopCoord)

当我testcase.py在外壳中运行(如下)时,它不运行LCP_02脚本:

import config
import LCP_02

if __name__ == "__main__":
    config.startX = 356254.432
    config.startY = 5325191.299
    config.stopX = 346200.101
    config.stopY = 5301688.499
    LCP_02

其中的所有功能LCP_02均具有打印语句(以视觉形式)。但是在运行时testcase.py,它们不会被打印。程序启动,等待大约2秒钟,然后>>>在外壳中显示

马丁·彼得斯(Martijn Pieters)

它不起作用有两个原因:

  1. 您已导入LCP_02,因此该__name__模块中值设置为'LCP_02',而不是'__main__''__testcase__'该名称永远不会基于导入的模块。

  2. 只引用LCP_02一行就不会“调用”该模块。如果受保护的代码要运行,那么在导入时就可以这样做

使用一个函数LCP_02代替:

def run_test():
    ask_costsurfacepath_path()
    ask_outputpath_path()
    CostSurfacefn = config.costsurfacepath
    startCoord = (config.startX,config.startY)
    stopCoord = (config.stopX,config.stopY)
    outputPathfn = config.outputpath
    main(CostSurfacefn,outputPathfn,startCoord,stopCoord)

if __name__ == "__main__":
    run_test()

并从您的testcase.py模块中调用该函数

LCP_02.run_test()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何启动 __name__ == '__main__': 使用来自另一个 .py 文件的特定输入?

如何使用 if __name__ == '__main__':

使用python-multiprocessing与if __name__ =='__main__'相关的谜

为什么在__name__ ==“ __main__”下使用manage.py执行脚本时会运行两次

使用 if __name__ == "__main__" 从其他文件调用函数:

在Python multiprocessing.Process中,我们是否必须使用`__name__ == __main__`?

使用`__name__ == “__main __”:'在一个类中实现`unittest.TestCase`

if __name__ ==“ __main__”的位置:

替代 if __name__ == '__main__':

如何从另一个python文件中的`if __name__ ==“ __main __”`中执行代码

使用外部python脚本打开maya并在maya中运行另一个脚本

从另一个脚本导入python脚本并使用参数运行它

来自 if __name__ == "__main__" 的返回语句

使用__name__作为属性

使用os从另一个Python脚本运行.py文件

当从crontab运行python脚本时,__ name__是什么?

__name__ ==“ __main__”怎么办?

如果__name__ =='__main__'函数调用

python if __name__ ==“ __main__”:IndentationError:预期为缩进块

将多个参数传递给 Python __name__=="__main__"

将使用argparse的python脚本/模块导入另一个python脚本

檢查調用腳本是否使用了“if __name__ ==”__main__”(以符合多處理要求)

如何重构使用argparse的脚本在另一个Python脚本中可调用?

从另一个脚本启动python脚本,并在subprocess参数中使用参数

检查一个Python脚本是否使用另一个Python脚本编译

Python类变量名称与__name__

__name__ 与 __package__ 在 python 中

无法在另一个 python 脚本中使用 python 函数的属性

使用标志变量从另一个 python 脚本执行 python 求解器