我正在准备一个python脚本,其中包含4个函数和一个调用它们的主要函数。 运行脚本后,所有功能都会一一执行,但是在第二个功能完全执行后,我手动终止了该脚本。
现在我想,当脚本重新运行时,它应该忽略前两个功能,并从第三个功能开始。
我有一个使用文件的想法,并在每个函数执行时添加一个条目,并在下一次从该文件中读取时,但是如果嵌套的话,将需要太多嵌套。
还有其他想法吗?
答案 0 :(得分:3)
为什么要“嵌套”?如果应该按顺序运行这些函数,则可以将要完成的最后一个函数的编号写入文件,然后具有一系列非嵌套的if,例如类似此伪代码的
... # read n from file, or 0 if it doesn't exist if n < 1: f1() ... # write 1 to the file if n < 2: f2() ... # write 2 to the file if n < 3: f3() ... # write 3 to the file ...
如果每个函数确实一个,但是没有嵌套。
如果函数可以按不同的顺序运行,则可以为每个文件写一个不同的文件,也可以按照您的建议将不同的行写到一个文件中,但是我不明白为什么它必须嵌套ifs。
答案 1 :(得分:1)
使用环境变量的其他解决方案,您可以定义一个实用程序函数,该函数将调用所有函数。它将检查是否设置了环境变量。
import os
def utiltiy_function():
function_count = os.environ.get("function_count")
if not function_count:
os.environ['function_count']=0 #this will set initially value when the function has not been called
if function_count==0:
func_1()
elif function_count==1:
func_2()
elif function_count==2:
func_3()
elif function_count==3:
func_4()
else:
pass
在每个函数末尾,您都可以更新环境变量的值。如果您仍然不确定,请告诉我。
答案 2 :(得分:1)
将函数调用置于带有键盘中断的try / catch中
n
这减少了将fn写入文件的代码重复。
如果您希望功能以什么顺序运行,可以执行以下操作:
fn = 0 # read from file
try:
if fn < 1: f1()
fn=1
if fn < 2: f2()
fn=2
...
except KeyboardInterrupt: # user stopped
... # write fn to file
如果您希望程序在完全运行后重置,请尝试以下操作:
fn = 0 # read from file
fn_reached = fn
functions = [f1, f2, f3, f4] # list of function objects
try:
for f in functions[fn:]:
f()
fn_reached += 1
except KeyboardInterrupt:
... # write fn_reached to file