python: 运行第一个条件变为假后的第二个条件

python: run the second condition after the first one becomes false

我有一个脚本,其中给出了 if-else 条件,if 接受用户输入并处理如果某个目录为空并填充该目录,else 运行s 如果该目录已经满了。

if not any(fname.endswith('.csv') for fname in os.listdir(certain_dir)): 
    def process_user_input:
     ....code....
        return something
else:
    def do_process_on_the_full_directory:
     ....code....
        return something_else

所以,如果目录为空,第一个条件变为 True 并且第一个过程发生,然后我必须再次 运行 脚本以使目录上的 else 条件 运行现在已经满了。 我的问题是是否有更好的方法来做到这一点,所以我不必 运行 脚本两次来获得我想要的东西,例如,如果有添加顺序的方法(首先,完成 第一个条件,第二个目录填充后运行第二个条件)。

我们可以在这里利用 decorators1 来强制执行不变量。

def fill_if_empty(func):
    def wrapper(*args, **kwargs):
        if YOUR_CONDITION_TO_CHECK_FOR_EMPTY_DIR:
            """
            fill empty directory here.
            """
            process_user_input()

        func(*args, **kwargs)
    return wrapper

@fill_if_empty
def do_process_on_the_full_directory():
    """
    Run some process on directory
    """
    pass

do_process_on_full_directory() 

1. 查看此 post 以了解有关装饰器的更多信息:How to make function decorators and chain them together?