如何确定谁在调用我的Python脚本?

时间:2015-10-13 09:57:43

标签: python

我正在编写一个Python脚本,我希望它的行为取决于谁调用该脚本:

  • 如果从批处理文件中调用它,我希望Python脚本将其输出写入日志文件。
  • 如果从命令提示符手动调用它,我希望Python脚本在屏幕上写出它的输出。

我的批处理文件如下所示:

  python py_script.py

有没有办法完成这项工作?我看了os.environ.has_key(),但我不知道如何使用它。

2 个答案:

答案 0 :(得分:1)

只需将一个参数传递给您的脚本,告诉他在哪里写...命令行参数在sys.argv中传递。 stdlib中有几个软件包可以处理它们,但您可能不需要这些软件包,这是您脚本的唯一选择。

答案 1 :(得分:0)

执行此操作的最简单方法是(作为评论中的tobias_k备注)仅在从脚本调用时管道到日志文件

REM This is your batch file
python py_script.py >> your_log_file.txt

布鲁诺在另一个答案中建议从sys.argv拉出一个标志肯定是有效的,但是你最终会做很多重复的代码。您的代码库将如下所示:

if LOGGING:
    with open(PATH_TO_LOGFILE, 'a') as logf:
        logf.write(some_txt)
else:
    print(some_txt)

随时打印电话。或者你可以做一些令人难以置信的丑陋的东西,如

if __name__ == "__main__":
    if LOGGING:
        old_stdout = sys.sdout
        with open(PATH_TO_LOGFILE, 'a') as logf:
            sys.stdout = logf
            main()
        sys.stdout = old_stdout

老实说,丑陋和黑客(甚至可能不起作用,我从未试图重新分配sys.stdout )。只需使用shell重定向。