在新的命令提示符窗口中打印Python代码的输出

3

我想打开一个命令行窗口并使用它来打印一些变量。 问题是,下面的代码会打开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。

非常感谢!


2
应该使用cmd吗?因为你可以直接用Python完成它。 - Netwave
1
可以做到,但会很复杂。我能想到的一种方法是:你可以有一个Python程序读取命名管道并将其输出到控制台,另一个Python程序将数字写入命名管道。Windows控制台不是你可以写入的GUI窗口。 - BoarGules
典型的 XY 问题。原帖作者想要的显然是一个记录器。 - bruno desthuilliers
2个回答

1
你需要的其实是stdlib中的logging包。只需配置logger将日志写入文件,然后在另一个命令窗口使用Windows版本的unix的tail -f 命令来检查几乎实时记录的内容。
请注意,您也可以只记录(仍然使用logging库)到sys.stderr,从命令窗口启动Python应用程序,然后您将在同一命令窗口中拥有所有日志记录(典型的Unix开发流程)。
最后说明:logging库非常可扩展,因此,如果您真的想要,甚至可以编写自己的logging.handler,打开自己的窗口并在其中显示日志消息(但这确实是浪费时间)。

应用程序的环境非常复杂,我无法通过命令窗口启动Python应用程序,因为它作为Python插件在Web上执行,并且一旦启动就没有太多控制权。但是,日志记录类可能会解决我的问题。谢谢! - Dario Siero
环境越复杂,使用 logging 工具的可能性就越大。理解 logging 的最重要的一点是,配置应该由应用程序代码而不是库来完成(您可以查看 Django 如何配置日志记录以获取一个工作示例)。 - bruno desthuilliers

0
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。 - Jakob Sachs
我知道,我只是试图简化代码以便专注于代码本身。但是,如果该代码可以在单个窗口中运行,那么输出将为12345。 - Dario Siero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接