使用 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)

当我在 shell 中运行 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中的所有函数都具有 print 语句(作为视觉对象)。但是当运行testcase.py时,它们不会被打印出来。程序启动,等待大约 2 秒钟,然后在 shell 中显示>>>

它不起作用有两个原因:

  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()

相关内容

  • 没有找到相关文章

最新更新