当内容长于终端宽度时,python如何使用“flush”打印动态内容

问题描述 投票:0回答:1

通常,如果内容长度小于终端宽度,它会完美地刷新并打印新内容,但如果长度远远超过终端宽度,它将分成几行。

使用

flush=True
它只能刷新最后一行,如下所示: 控制台输出

我该如何解决这个问题?

我目前正在使用:

content = "\r...new contents"
print(content, flush=True, end="")
python terminal console stdout flush
1个回答
0
投票

有趣的谜题。

这是我解决这个问题的方法,您可以进一步开发它以达到您想要的效果。

我从这里

获取了6行长文本

我让它放弃了长行文本,并使用

.
而不是空格作为空白,这样就清楚发生了什么。我将剪辑设置为 4,以便您可以看到每次都被
.
覆盖的结尾。

#!/usr/bin/python3

import os, time

# make a lot of lines
longlines = """
Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
The Python interpreter and the extensive standard library are freely available in source or binary form for all major platforms from the Python web site, https://www.python.org/, and may be freely distributed. The same site also contains distributions of and pointers to many free third party Python modules, programs and tools, and additional documentation.
The Python interpreter is easily extended with new functions and data types implemented in C or C++ (or other languages callable from C). Python is also suitable as an extension language for customizable applications.
This tutorial introduces the reader informally to the basic concepts and features of the Python language and system. It helps to have a Python interpreter handy for hands-on experience, but all examples are self-contained, so the tutorial can be read off-line as well.
For a description of standard objects and modules, see The Python Standard Library. The Python Language Reference gives a more formal definition of the language. To write extensions in C or C++, read Extending and Embedding the Python Interpreter and Python/C API Reference Manual. There are also several books covering Python in depth.
This tutorial does not attempt to be comprehensive and cover every single feature, or even every commonly used feature. Instead, it introduces many of Python’s most noteworthy features, and will give you a good idea of the language’s flavor and style. After reading it, you will be able to read and write Python modules and programs, and you will be ready to learn more about the various Python library modules described in The Python Standard Library.
""".splitlines()

maxsize = os.get_terminal_size().columns
for content in longlines:
    while content:
        clip = 4
        chunk, content = content[:maxsize - clip], content[maxsize:]
        print(f"\r{chunk}", end=f"{'.' * int(maxsize - len(chunk))}", flush=True )
        time.sleep(1)

或者有curses(我讨厌使用它),但它们会干净地做你想做的事。还有另一个较新的诅咒库,但遗憾的是我无法为您找到它。

© www.soinside.com 2019 - 2024. All rights reserved.