python:判断是否在shell中运行(如:sun grid engine队列)

7 投票
4 回答
1807 浏览
提问于 2025-04-15 12:07

有没有办法在一个Python程序里判断它是从终端启动的,还是像Sun Grid Engine这样的批处理引擎里启动的呢?

这个想法是为了决定是否要打印一些进度条和其他的ASCII互动内容。

谢谢!

p.

4 个回答

3

稍微简短一些:

import sys

sys.stdout.isatty()
6

你可以使用 os.getppid() 来查找当前进程的父进程的ID,然后用这个ID来确定那个进程正在运行哪个程序。更有用的是,你可以使用 sys.stdout.isatty() —— 这个虽然没有直接回答你标题中的问题,但似乎更好地解决了你所描述的实际问题(如果你是在一个命令行环境下运行,但你的输出被传递给其他进程或者重定向到一个文件,你可能也不想在上面输出“交互式内容”)。

12

标准的方法是 isatty()

import sys
if sys.stdout.isatty():
    print("Interactive")
else:
    print("Non-interactive")

撰写回答