python:判断是否在shell中运行(如:sun grid engine队列)
有没有办法在一个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")