shell - 在 python 脚本中,检查交互式 shell

  显示原文与译文双语对照的内容
59 1

我需要确定调用 python 脚本的shell 是处于交互模式还是不处于交互模式。如果是交互模式,程序应该将输出输出到 less(1) 以便阅读。如果不是,它应该只打印输出到 stdout,以便将它的输送到打印机。文件或者不同的页面。

在 shell script 中,我会检查是否定义了提示变量 $PS1,或者者在 $- 变量中存储的标志中查找-i选项。

从 python 中测试交互的首选方法是什么?

时间:原作者:0个回答

140 3

这通常工作得很好

import os, sys
if os.isatty(sys.stdout.fileno()):
. . .
原作者:
129 2

通过使用 ,可以使用相同的方法和测试,如果stdin与一个 terminate(tty), 相关联,则可以使用os.isatty() 插件来完成这里操作,例如:

>>> os.isatty(0)
True

N.B: 在通过ssh远程调用命令时,这将失败,给定的解决方案是测试标准是否与管道关联。

原作者:
101 1
if sys.flags.interactive:
 #interactive
else:
 #not interactive 

http://docs.python.org/library/sys.html#sys.flags

原作者:
64 1

为什么不使用 symply ( python3.x )?

import os
def is_interactive():
 'check if current session is interactive'
 try:
 os.path.isdir(os.path.abspath(__file__))
 return(False)
 except:
 return(True)

如果代码在jupyter笔记本中运行,它也有效。

原作者:
145 5

如果你已经对matplotlib有依赖性,或者你不介意引入一个,那么你可以直接调用 matplotlib.is_interactive() 。

原作者:
...