【问题标题】:Print the output of a python code in a new cmd window在新的 cmd 窗口中打印 python 代码的输出
【发布时间】:2018-05-14 10:23:59
【问题描述】:

我想打开一个 cmd 窗口并用它来打印一些变量。 问题是,下面的代码打开了 5 个独立的窗口(显然)。

import os

for i in range(0,5):
    command = "start cmd /K echo " + str(i+1)
    os.system(command)

我不知道我是否可以参考或链接到已打开的窗口来向它发送命令。

想要的结果是……

1
2
3
4
5

...在同一个窗口中

目的是能够在代码执行期间在该窗口上打印某些变量。

我被困住了,我不知道这是否可能。我在 W10 上使用 Python 2.7

非常感谢

【问题讨论】:

  • 应该是用cmd吗?因为你可以用 python 本身来做到这一点
  • 可以,但是会比较复杂。我能想到的一种方法:您可以让一个 Python 程序读取命名管道并将获取的内容输出到控制台,而另一个 Python 程序将数字写入命名管道。 Windows 控制台不是您可以写入的 GUI 窗口。
  • 典型的 XY 问题。 OP 想要的显然是一个记录器。

标签: python printing cmd window output


【解决方案1】:

你想要的实际上是来自 stdlib 的 logging 包。只需将记录器配置为写入文件,然后在另一个命令窗口中使用 Windows 等效的 unix 的 tail -f <filename> 命令来检查(几乎)实时登录的内容。

请注意,您也可以只登录(仍然使用 logging 库)到 sys.stderr,从命令窗口启动您的 python 应用程序,然后您将在同一个命令窗口(典型的 unix开发流程)。

最后一点:logging 库是相当可扩展的,因此您甚至可以编写自己的 logging.handler,如果您真的需要,它会打开它自己的窗口并在其中显示日志消息(但这真的是浪费时间)。

【讨论】:

  • 应用环境很复杂,无法通过命令窗口启动python应用,因为它是在web上作为python插件执行的,一旦启动就没有太多控制权.但是,是的,日志类可以解决我的问题。谢谢!
  • 环境越复杂,logging 就越有可能是正确的工具。 logging 最重要的一点是,配置应该由应用程序代码完成,而不是由库完成(您可以查看 django 如何配置日志以获取工作示例)。
【解决方案2】:
import os
command = "start cmd /K echo "
for i in range(0,5):
    command += str(i+1)

os.system(command)

Echo 不能很好地处理不同版本的换行符。所以这会输出序列12345

【讨论】:

  • 嗯,它不会输出 12345 字面意思。但我认为 echo 返回 12345 。
  • 我知道,我只是尝试简化代码以专注于代码。但是,是的,该代码的输出将为 12345,以防它可以在单个窗口上启动
猜你喜欢
  • 1970-01-01
  • 2022-08-12
  • 2018-10-29
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多