【问题标题】:How to run function in python after exiting command line退出命令行后如何在python中运行函数
【发布时间】:2018-02-01 23:03:30
【问题描述】:

我想在终端上“命令 c”后运行一个函数。我正在使用 python 将一些数据抓取到文件中,然后我想在终止抓取过程时立即关闭并将文件推送到谷歌驱动器。我已经编写了两个不同的文件用于抓取和推送,但我想做这一切在一个文件中。如何在python中指示“命令c”的变化?如果命令 c.. 执行此操作...

任何帮助都会非常有用!谢谢!

【问题讨论】:

    标签: python macos terminal google-drive-api


    【解决方案1】:

    序列 ctrl+C(或 Mac 上的 command+C)导致 KeyboardInterrupt 异常待提高。 您可以通过简单的try-except 简单地捕获此异常。

    例如,以下代码将运行一个需要一些时间的虚拟工作,并且在 ctrl+C 上,将停止该工作并打印其当前状态。

    import time
    
    try:
        for i in range(100):
            time.sleep(1)
    except KeyboardInterrupt:
        print(i)
    

    请注意,正如 in the doc 所指定的,KeyboardInterrupt 异常继承自 BaseException,但 不是 继承自 Exception。 因此,except Exception 子句不会捕获 KeyboardInterrupt,而 except BaseException 会同时捕获 KeyboardInterruptException

    【讨论】:

    • 您好,这非常有用-谢谢!我如何让它运行没有设定的时间?我不想在范围内使用 for i....我希望它一直运行直到键盘中断
    • @torylor 当然,这只是一个占位符。您需要做的就是将程序主体放在try 块中,并在该块之后放置except KeyboardInterrupt 子句。我最近也做了同样的事情,运行了大量测试,结果最终提交给 Git - 我想在手动中断测试时保存部分结果。
    【解决方案2】:

    你需要的是atexit模块https://docs.python.org/2/library/atexit.html 创建一个处理函数来完成持久化部分。用atexit注册它在出口处运行。

    def goodbye(name, adjective):
        print 'Goodbye, %s, it was %s to meet you.' % (name, adjective)
    
    import atexit
    atexit.register(goodbye, 'Donny', 'nice')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多