是否存在任何标准的“附带电池”方法来清除Python脚本中的终端屏幕,或者我必须去诅咒(库,而不是单词)?
当前回答
如果您希望在使用python shell时清除您的终端。然后,您可以执行以下操作清除屏幕
import os
os.system('clear')
其他回答
您可以对terminfo数据库进行分解,但这样做的函数无论如何都是在curses中。
这将在Python2或Python3两个版本中工作
print (u"{}[2J{}[;H".format(chr(27), chr(27)))
这将清除25个新行:
def clear():
print(' \n' * 25)
clear()
我在pydev中使用eclipse。我更喜欢换行解决方案比范围内的for num。for循环抛出警告,而打印换行符则不会。 如果您想在clear语句中指定换行数,请尝试此变体。
def clear(j):
print(' \n' * j)
clear(25)
公认的答案是一个很好的解决方案。问题是,到目前为止,它只适用于Windows 10, Linux和Mac。是的,Windows(以缺乏ANSI支持而闻名)!这个新功能是在Windows 10(及以上版本)上实现的,它包括ANSI支持,尽管你必须启用它。这将以跨平台的方式清除屏幕:
import os
print ('Hello World')
os.system('')
print ("\x1B[2J")
在任何低于Windows 10的系统上,它会返回这个:
[2J
这是由于在以前的Windows版本中缺乏ANSI支持。但是,可以使用colorama模块来解决这个问题。这增加了对Windows上ANSI字符的支持:
在Unix和mac上,ANSI转义字符序列长期用于生成彩色终端文本和光标定位。Colorama也在Windows上实现了这一点,它通过包装stdout,剥离它找到的ANSI序列(在输出中作为官书),并将它们转换为适当的win32调用来修改终端的状态。在其他平台上,Colorama什么都不做。
这里有一个跨平台的方法:
import sys
if sys.platform == 'win32':
from colorama import init
init()
print('Hello World')
print("\x1B[2J")
或者用print(chr(27) + "[2J")代替print("\x1B[2J")。
@poke的答案在Windows上是非常不安全的,是的,它可以工作,但它真的是一个黑客。与脚本在同一字典中的名为“cls.bat”或“cls.exe”的文件将与命令发生冲突,并执行该文件而不是命令,从而产生巨大的安全隐患。
一个最小化风险的方法是改变cls命令被调用的位置:
import os
os.system('cd C:\\Windows|cls' if os.name == 'nt' else 'clear')
这将把Currant Dictionary更改为C:\Window(这里反斜杠很重要),然后执行。C:\Windows始终存在,需要管理权限才能在那里写入,这使得它适合以最小的风险执行此命令。另一种解决方案是通过PowerShell而不是命令提示符运行命令,因为PowerShell已经防范了此类漏洞。
在这个问题中还提到了其他方法:在shell中清除屏幕,这也可能是有用的。
我将这样做,使它看起来更像bash:
只需在主目录下创建一个名为.pythonstartup的文件,并在函数中使用poke的答案
在Linux上:
echo "from subprocess import call
def clear(int=None):
call('clear')
if int == 0:
exit()
clear()" >> $HOME/.pythonstartup ; export PYTHONSTARTUP=$HOME/.pythonstartup ; python
您可以添加export PYTHONSTARTUP=$HOME/。Pythonstartup到你的。/bashrc文件
因为我关心的是空间;调用该函数将不会在启动时显示python解释器描述,但您可以删除clear()以保留它。
像使用普通函数一样使用它应该不会打印退出状态:
>>> clear()
如果您将参数0传递给函数,它将清除屏幕并成功退出,因此您可以在干净的屏幕中继续使用shell
>>> clear(0)
推荐文章
- 使用Pandas将列转换为行
- 从matplotlib中的颜色映射中获取单个颜色
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块
- 蟒蛇导出环境文件
- Django - makemigrations -未检测到任何更改
- SQLAlchemy:引擎、连接和会话差异
- 在Python Pandas中删除多个列中的所有重复行
- 更改pandas DataFrame中的特定列名
- 将Pandas多索引转换为列