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

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

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

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

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

时间: 原作者:

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() 。

...