检查 Python 脚本中的交互式 shell
我需要确定调用 Python 脚本的 shell 是否处于交互模式。如果处于交互模式,程序应将输出传送到 less(1) 以便于阅读。如果没有,它应该简单地将其输出打印到标准输出,以允许它通过管道传送到打印机、文件或不同的寻呼机。
在 shell 脚本中,我会检查提示变量 $PS1 是否已定义,或者在 $- 变量中存储的标志中查找 -i 选项。
在 Python 中测试交互性的首选方法是什么?
I need to determine whether the shell which invoked my Python script was in interactive mode or not. If it was in interactive mode, the program should pipe output to less(1) for easy reading. If not, it should simply print its output to stdout, to allow it to be piped away to a printer, file, or a different pager.
In a shell script, I would have checked if the prompt variable $PS1 was defined, or looked for the -i option among the flags stored in the $- variable.
What is the preferred method for testing interactivity from within Python?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这通常效果很好
This is often works well enough
从 此链接,您可以使用相同的方式测试 stdin 是否与终止(tty),您可以使用 os.isatty() 来执行此操作,示例:
注意:来自相同的当您通过 ssh 远程调用该命令时,这将失败,给出的解决方案是测试 stdin 是否与管道关联。
From this link you can use the same way and test if stdin is associated to a terminate(tty), you can do this using os.isatty(), example:
N.B: From the same link this will fails when you invoke the command remotely via ssh, the solution given is to test if stdin is associated to a pipe.
如果您已经依赖于 matplotlib,或者您不介意引入一个依赖项,则可以随时调用 matplotlib.is_interactive()
If you already have a dependency on matplotlib, or you don't mind introducing one, you can always just call matplotlib.is_interactive()
http://docs.python.org/library/sys.html#sys.flags
http://docs.python.org/library/sys.html#sys.flags
我做了一个封面类来进行测试。
例如你有:
我做了第二堂课,只是为了测试
I make a cover class for testing.
For example you have :
I make a second class, just for testing