为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据另一个函数的成功或失败来执行一个函数?

如何根据另一个函数的成功或失败来执行一个函数?

料青山看我应如是 2023-02-22 10:50:00
我有一个主要功能,它从用户输入中搜索带有 2 个关键字的 txt 文件,如果找到它,它将打印 txt 文件中的行。我想编写另一个函数(send_email),如果主函数在文件中找不到匹配的任何内容,它就会执行,我们将不胜感激。def main_function():  with open("file.txt", "r") as f:    for line in f.readlines():      if line.startswith(area) and name in line:        print("\n" + "\n" + "SPP Location:" + "\n" + line + "\n")main_function()def send_email():  blah blah blahif main_function is False:   send_email
查看完整描述

4 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

你可以通过设置一个标志来做到这一点。如果您遍历文件但没有找到匹配项,则标志保持为假。


def main_function():

  with open("file.txt", "r") as f:

    find_flag = False

    for line in f.readlines():

      if line.startswith(area) and name in line:

        print("\n" + "\n" + "SPP Location:" + "\n" + line + "\n")

        find_flag = True

    if not find_flag:

        send_email()


查看完整回答
反对 回复 2023-02-22
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

干得好。无需单独调用 main_function。当您评估条件“not main_function()”时,它将被调用。


def main_function():

    with open("file.txt", "r") as f:

        for line in f.readlines():

            if line.startswith(area) and name in line:

                print("\n" + "\n" + "SPP Location:" + "\n" + line + "\n")

                return True

    return False


def send_email():

    blah blah blah



if not main_function():

    send_email()


查看完整回答
反对 回复 2023-02-22
?
莫回无

TA贡献1865条经验 获得超7个赞

您可以将匹配成功保存在一个变量中,如果变量没有因匹配而改变,则调用该函数:


def main_function():

    with open("file.txt", "r") as f:

        results = 0

        for line in f.readlines():

            if line.startswith(area) and name in line:

                print("\n" + "\n" + "SPP Location:" + "\n" + line + "\n")

                results = 1

        if results == 0:

            send_email()


查看完整回答
反对 回复 2023-02-22
?
www说

TA贡献1775条经验 获得超8个赞

下面的脚本怎么样:


try:

    main_function

except:

    send_email

这样,如果 main_function 函数抛出错误,python 将捕获它,并调用 send_email 函数。


或者,如果您不希望 main_function 因抛出错误而失败,您可以执行以下操作:


def main_function():

  

  success = False

  

  with open("file.txt", "r") as f:

    for line in f.readlines():

      if line.startswith(area) and name in line:

        print("\n" + "\n" + "SPP Location:" + "\n" + line + "\n")

        

        success = True

  

  return success


def send_email():

  blah blah blah


main_function_success = main_function()


if not main_function_success:

   send_email


查看完整回答
反对 回复 2023-02-22
  • 4 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信