Python的交互式提示符“>>>”输出到哪里?

2024-01-09

我遇到了一个有点不寻常的情况。我正在尝试编写交互式控制台的脚本(用于教学/测试目的),并且我尝试了以下操作:

$ python > /dev/null
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print 3
>>> 

3没有打印出来,所以显然其他所有东西都在stderr。到目前为止,一切都很好。但随后我们重定向stderr:

$ python 2> /dev/null
>>> print 3
3
>>> 

两种情况下如何打印提示呢?

编辑:重定向两者stdout and stderr导致绝对不会打印任何内容。所以Python显然“选择”了其中之一stdout or stderr。有记录表明这种情况会发生吗?我无法弄清楚Python源代码中实际上是如何完成的。


看起来 python 检查是否stdout is a tty:

/* This is needed to handle the unlikely case that the
 * interpreter is in interactive mode *and* stdin/out are not
 * a tty.  This can happen, for example if python is run like
 * this: python -i < test1.py
 */
if (!isatty (fileno (sys_stdin)) || !isatty (fileno (sys_stdout)))
    rv = PyOS_StdioReadline (sys_stdin, sys_stdout, prompt);
else
    rv = (*PyOS_ReadlineFunctionPointer)(sys_stdin, sys_stdout,
                                         prompt);

源代码来自Parser/myreadline.c194号线附近。

解释器可能会导入readline启动时的模块,在这种情况下PyOS_ReadlineFunctionPointer将被设置为call_readline,它使用readline图书馆。特别是它调用rl_callback_handler_install http://www.delorie.com/gnu/docs/readline/rlman_41.html。该函数的文档没有说明提示的打印位置,但它可能会检查是否stdout/stderr are ttys.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python的交互式提示符“>>>”输出到哪里? 的相关文章

随机推荐

  • 我可以强制 Entity Framework Core 7 不将 ICollections 设置为只读吗? [复制]

    这个问题在这里已经有答案了 Entity Framework Core 7 引入了一项重大更改 尽管它是notEF Core 7 的重大更改中列出 使用脚手架定义模型类时 Scaffold DbContext EF Core 7 现在使IC
  • 有没有地方可以测试代码是否符合 ES5/安全?

    有时我想知道我正在编写的代码是否符合 ES5 安全 Example 由于箭头功能 这会失败 gt something I know Babel可以解决这个问题 但有时我想测试一些案例 有没有地方可以让我这样做 尝试ESlint https
  • 为什么 OnChange 在 Formik 中使用时不起作用?

    我正在尝试在 React 中使用 Formik 作为一个虚拟应用程序 如果我给出值作为道具 我将无法在任何一个输入框中输入任何内容 另一方面 如果我跳过 value 属性 那么我可以在框中键入内容 但提交时不会反映为值 这是代码 expor
  • Qt Mac 部署

    将 QT Framework 添加到我的 app 包中 我正在关注 Qt 站点上有关部署的文档 我创建了一个名为 HTTPClient app 的应用程序 我在 Contents 下创建了 Framework 文件夹 并复制了 crypto
  • 如何从 R 中的 posixct 格式日期时间中选择小时、分钟和秒

    我有一个像这样的数据框 dput tail x 10 structure list DATE structure c 1375725600 1375729200 1375732800 1375736400 1375740000 137574
  • OpenCV 匹配图像

    我正在尝试使用 OpenCV 来匹配如下图像 img2 http img849 imageshack us img849 8177 clearz jpg http img849 imageshack us img849 8177 clear
  • Umbraco 7 使用语言/字典

    我们的项目终于可以添加翻译了 我似乎无法弄清楚如何在 Umbraco 7 中实际使用语言 我在后端添加了一种语言和一些字典项目 但如何在代码中选择给定的语言 是否有任何帮助程序可以在 API 中获取翻译 就像 DictionaryHelpe
  • 使用WebView进行多页面登录网站并获取数据

    我正在为一个网站构建一个 Android 应用程序作为移动客户端 该网站没有 也不会 拥有自己的移动浏览器 UI 我选择的架构使用一个隐藏的 WebView 我使用登录页面对其进行初始化 loadURL 然后加载 JavaScript 以使
  • 如何使用 FCM 发送设备到设备通知,而不使用 XMPP 或任何其他脚本。

    有没有办法通过 FCM 将上游通知消息从一台 Android 设备发送到与 Firebase 数据库连接的另一台设备 我知道 XMPP 服务器可以接收上游消息并将通知发送到其他设备 要接收使用上游 API 发送的消息 我需要实现 XMPP
  • ajax 请求完成后浏览器继续“加载”

    您已经看到过这一点 在 ajax 密集的页面上 例如 meebo com 浏览器永远不会停止 旋转 它永远不会表明它已完成加载 造成这种情况的原因是什么 是否有任何方法可以一致地告诉浏览器 无论它是什么浏览器 加载已完成 编辑 抱歉 我应该
  • 标签移动到注册和子是什么意思?

    given a a label L1 db beat it 10 0 L2 what is the meaning of mov eax L2 sub eax L1 L2 寄存器 以及来自标签的子寄存器包含字符串 MOV EAX L2将标签
  • 有没有一个工具可以生成Spring应用程序上下文依赖关系图/图?

    有没有一个工具可以生成 Spring 应用程序上下文的图表 该工具还应该考虑注释驱动的配置 如 Autowired 该工具可以通过在运行时 转储 BeanDefinitions 来生成依赖关系图 IE 我不需要该工具来进行静态代码分析 Sp
  • 工会内的无名工会

    我正在阅读一些代码并发现类似以下内容 typedef union int int32 int boolean time t date char string union struct foo a struct foo b struct fo
  • 在 Android 中使用默认字体样式

    如何在 xml 中使用 Android 默认字体大小 I tried android textAppearance android style TextAppearance Large 但我得到 错误 错误 找不到资源 与给定名称匹配 位于
  • 在滚动和单击事件上上下移动 Div?

    我想制作一个类似于 chanel com 的网站 如果向下滚动 一个新的 div 会向上移动到页面顶部 不同的是 在我正在设计的网站上 它也应该在点击时具有相同的效果 在我的网站上 有两个按钮也应该在单击时上下移动同一 div 从而展开和折
  • 即使具有正确的权限,图形 API 错误 #200

    我正在设置一个机器人来自动在 Facebook 页面上发帖 但是当我运行脚本时 图形 API 抛出以下错误 图形返回错误 200 需要publish to groups权限并且应用程序安装在组中 或者以具有足够管理权限的管理员身份管理pag
  • Spring Boot 应用程序独立运行良好,在 docker 中出错

    我有一个基于 spring boot 的 java 应用程序 它可以从命令行正常运行 嵌入式 tomcat 独立 Problem 当我在 docker 中运行该应用程序时 它无法正确运行 控制台显示应用程序启动正常 没有错误 但是 浏览器显
  • 如何为每个应用程序使用一个 HttpClient?

    我正在寻找一种有效的方法来使用HttpClient对于我的 Android 应用程序 我在不同的活动中使用 HttpClient 并且我只想为应用程序使用一个客户端并将其在活动中传递 尽管我查看了一些答案 但我无法找到一种方法来仅使用一个客
  • 如何更改引导响应样式?

    我们计划以其他方式改变引导程序的响应性质 请查看当前的 html function panel title a on click function this closest panel siblings toggle panel title
  • Python的交互式提示符“>>>”输出到哪里?

    我遇到了一个有点不寻常的情况 我正在尝试编写交互式控制台的脚本 用于教学 测试目的 并且我尝试了以下操作 python gt dev null Python 2 7 3 v2 7 3 70274d53c1dd Apr 9 2012 20 5