ecFlow学习笔记02.3.11 —— 缩进

目录

该教程的最新版已发布在GitHub上,请访问ecflow-tutorial-cn

这是 ecFlow 教程的一部分,完整教程请参看《ecFlow学习笔记02 —— 教程

  • * *文本方式支持首行缩进。但 Python 中缩进也是语法结构,会影响程序的含义。

Python 方式需要使用 with 语句实现缩进。
下面将前一个例子用 with 语句改写。

#!/usr/bin/env python2.7
import os
import ecflow
import sys
version = sys.version_info
if version[1] < 7:
    print "This example requires python version 2.7, but found : " + str(version)
    exit(0)
print "Creating suite definition"
with ecflow.Defs() as defs:
    with defs.add_suite("test") as suite:
        suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"),  "course"))
        suite.add_variable("ECF_HOME",    os.path.join(os.getenv("HOME"),  "course"))
        with suite.add_family("f1") as f1:
            f1.add_variable("SLEEP", 20)
            f1.add_task("t1").add_meter("progress", 1, 100, 90)
            f1.add_task("t2").add_trigger("t1 eq complete").add_event("a").add_event("b")
            f1.add_task("t3").add_trigger("t2:a")
            f1.add_task("t4").add_trigger("t2 eq complete").add_complete("t2:b")
            f1.add_task("t5").add_trigger("t1:progress ge 30")
            f1.add_task("t6").add_trigger("t1:progress ge 60")
            f1.add_task("t7").add_trigger("t1:progress ge 90")
        with suite.add_family("f2") as f2:
            f2.add_variable("SLEEP", 20)
            f2.add_task("t1").add_time("00:30 23:30 00:30")
            f2.add_task("t2").add_day("sunday")
            f2.add_task("t3").add_date(1, 0, 0).add_time(12, 0)
            f2.add_task("t4").add_time(0, 2, True)
            f2.add_task("t5").add_time(0, 2)
    print defs
    print "Checking job creation: .ecf -> .job0"
    print defs.check_job_creation()
    print "Checking trigger expressions"
    print defs.check()
    print "Saving definition to file 'test.def'"
    defs.save_as_defs("test.def")

另外一种方式是使用 ecf.py,但没找到这个脚本。

#!/usr/bin/env python2.7
import os
import sys
sys.path.append('/home/ma/emos/def/o/def')
from ecf import *
print "Creating suite definition"
defs = Defs().add(# Stream like definition
    Suite("test").add(
        Variables({ # a dictionnary to detect duplicated variables
                "ECF_INCLUDE": os.getenv("HOME") + "/course",
                "ECF_HOME":    os.getenv("HOME") + "/course",}),
        Family("f1").add(
            Variable("SLEEP", "20"),
            Task("t1").add(Meter("progress", 1, 100, 90)),
            Task("t2").add(
                Trigger("t1 eq complete"),
                Event("a"),
                Event("b")),
            Task("t3").add(Trigger("t2:a")),
            Task("t4").add(Trigger("t2 eq complete"),
                           Complete("t2:b")),
            Task("t5").add(Trigger("t1:progress ge 30")),
            Task("t6").add(Trigger("t1:progress ge 60")),
            Task("t7").add(Trigger("t1:progress ge 90")),),
        Family("f2").add(
            Variable("SLEEP", "20"),
            Task("t1").add(Time( "00:30 23:30 00:30" )),
            Task("t2").add(Day( "sunday" )),
            Task("t3").add(Date("1.*.*"),
                           Time("12:00")),
            Task("t4").add(Time("+00:02")),
            Task("t5").add(Time("00:02")))))
out = file("test.def", "w")
print >>out, defs