【问题标题】:Fool python's os.isatty from a bash script从 bash 脚本中愚弄 python 的 os.isatty
【发布时间】:2013-04-09 03:33:39
【问题描述】:

我正在编写一个将从 cron 调用的 bash 脚本。

bash 脚本运行一个 python 命令,该命令在终端中使用 pythons os.isatty function 进行感知,并根据它是手动运行还是通过 cron 运行输出不同的内容。这使得调试变得非常困难,我想让它始终假定它不在 TTY 中。

我希望能够在 bash 脚本中添加一些内容,以欺骗 python 脚本,使其不在终端中运行,因此始终输出相同的内容。

确认一下,我可以控制 bash 脚本,但不想编辑 python,因为这是一个打包的应用程序。

有什么想法吗?

我希望这是有道理的。

非常感谢您。

【问题讨论】:

  • 澄清一下:您希望脚本“认为”它 使用tty 运行还是没有 使用tty 运行?
  • 只需调用一次 isatty 并将其存储在某个全局可访问的位置...现在您可以将值设置为真或假...如果您在整个地方都在执行 os.isatty,那可能不是无论如何都很棒
  • ExP:我希望脚本“认为”它没有使用 TTY 运行
  • os.isatty(of_what)?
  • Joran:正如我在帖子中所说,我无法控制 python 脚本。只有调用它的 bash 脚本。

标签: python bash cron tty


【解决方案1】:

您可以将输出重定向到cat(假设脚本测试sys.stdout 的文件描述符的atty-ness)。

python myscript.py | cat

a.py

import sys
print sys.stdout.isatty()

测试:

> python a.py
True
> python a.py | cat
False

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2013-03-14
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多