【问题标题】:How to clean terminal(cmd) , after opening another file in terminal在终端中打开另一个文件后如何清理终端(cmd)
【发布时间】:2015-01-03 21:36:56
【问题描述】:

来自this的问题,我解决了这个问题,但现在又出现了另一个问题。现在我的第一个.exe文件正在Pygame中通过这些代码打开;

process = subprocess.Popen(["wtf.exe"])
output, errors = process.communicate()

此文件 (wtf.exe) 在打开 Pygame 并将该信息放入 Pygame 之前向用户询问信息;

当我确认这些信息时,它会用我在第一个程序中提供的信息打开 Pygame 屏幕并关闭第一个程序;

到目前为止一切都很好,当我点击“播放”时,它正在终端中打开另一个文件;但最后一个文件的数据还在。

你看,这里第一张图片的数据,应该是没有这些数据的。为什么终端没有自行清理?这是在终端中运行的另一个 .exe 文件,是“新”终端上的一个新文件,但它看起来并不新。处理完第一个文件后如何清理终端?如您所知,这些是在终端上工作的 .exe 文件,我无法手动清除终端,我必须在该文件中编写一些代码,但我不知道该怎么做。

编辑:我故意提供了一些不可接受的信息,请检查此图片:

Edit2Here 是我的问题的视频。

【问题讨论】:

  • 你希望它从顶部开始还是你的提示可以在底部?
  • 我当然想从最上面开始,而且这个问题真的很奇怪。它应该是另一个终端,因为我打开了一个不同的 .exe 文件,但正如您看到的第一个数据仍然存在。如果第二个程序正在运行,我从用户那里获取的数据不能在终端中。
  • 哦,我明白你为什么不只使用一个终端窗口,并在输入信息后将其清除,只需使用空打印语句执行 for 循环 2000 通常会清除终端窗口
  • @Ondeckshooting 好吧,这实际上不是一个解决方案,就像隐藏第一个数据:-) 但我想清除它,它更像是“程序员”,也不应该发生这个问题,正如我所说第二个程序是另一个 .exe 文件..
  • 您的脚本通过控制台程序 py.exe 运行,该程序启动 python.exe。当您运行subprocess.Popen('wtf.exe') 时,子进程将继承当前控制台。您可以先运行subprocess.Popen('cls', shell=True) 让shell 清除屏幕。或者您可以指示 Windows 创建一个新控制台:subprocess.Popen('wtf.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)

标签: python windows cmd pygame subprocess


【解决方案1】:

如果可能,*nix 上的cls internal command (Windows) / clear 命令清除终端屏幕及其回滚缓冲区:

import os

os.system('cls')

尝试一下,然后再发表评论。

作为替代方案,您可以 start a new console window (creationflags=CREATE_NEW_CONSOLE on Windows) for each command 或仅使用最后一个命令,即,当命令结束时,它的窗口关闭,因此没有什么可清理的。

您也可以在没有控制台的情况下将您的父脚本作为 GUI 程序运行(使用 .pyw 文件扩展名),即,如果子进程需要控制台;它必须自己分配。

【讨论】:

    【解决方案2】:

    @J.F. Sebastian 为您提供了一种方法,即从您的代码中清除屏幕。

    但是,由于您已经在使用 pygame,您可以使用 inputbox module 提示用户输入。

    这样,你就彻底解决了问题。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2014-12-02
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      相关资源
      最近更新 更多