How can I check to see if a Python script was started interactively?

前端 未结 3 1884
北海茫月
北海茫月 2020-12-21 16:27

I\'d like for a script of mine to have 2 behaviours, one when started as a scheduled task, and another if started manually. How could I test for interactiveness?

EDI

相关标签:
3条回答
  • 2020-12-21 16:57

    I'd just add a command line switch when you're calling it with cron:

    python yourscript.py -scheduled

    then in your program

    import sys
    
    if "-scheduled" in sys.argv:
        #--non-interactive code--
    else: 
        #--interactive code--
    
    0 讨论(0)
  • 2020-12-21 16:59

    You should simply add a command-line switch in the scheduled task, and check for it in your script, modifying the behavior as appropriate. Explicit is better than implicit.

    One benefit to this design: you'll be able to test both behaviors, regardless of how you actually invoked the script.

    0 讨论(0)
  • 2020-12-21 17:08

    If you want to know if you're reading from a terminal (not clear if that is enough of a distinction, please clarify) you can use

    sys.stdin.isatty()
    
    0 讨论(0)
提交回复
热议问题