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

时间:2014-04-04 07:16:48

标签: python-2.7 module main

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

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

1 个答案:

答案 0 :(得分:1)

它有两个原因无效:

  1. 您导入了LCP_02,因此该模块中的__name__值设置为'LCP_02',而不是'__main__''__testcase__'。根据导入模块的内容,名称​​ never

  2. 只需在一行上引用LCP_02即可调用'那个模块;如果保护代码将要运行,那么在导入时它就会

  3. 使用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()