第一次和第二次执行的程序运行方式不同。为什么?

2024-04-27 03:06:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Mac上运行一个使用终端的Python2.7程序。如果我打开终端并运行程序,它的执行方式与我在同一终端窗口中第二次运行程序时不同。什么可能导致这样的问题?你知道吗


下面是我正在使用的代码。行print bg("grey_50")在第一次程序执行时不打印任何内容,但在第二次执行时正确地打印一条灰色线。在两次执行中,for函数的操作是相同的,并且正确。为什么灰线只在我第二次运行程序时打印?

uses_color = "True"

if uses_color == "True":
    from colored import fg, bg

if uses_color == "True":
    print bg("grey_50")
    for i in range(44):
        print bg("grey_100")

顺便说一句,在第二节和第三节之间还有一些代码,它们的工作原理是相同的,而且每次运行函数时都是正确的。你知道吗

另外,请注意,行print bg("grey_50") print bg("grey_100") 都使用有色模块,但只有后者的工作方式是一致的。你知道吗


链接到彩色的https://github.com/dslackw/colored


Tags: 函数代码程序true终端forifmac
1条回答
网友
1楼 · 发布于 2024-04-27 03:06:03

这与您的程序或重复运行无关。问题在于您的终端在滚动时的行为。只有在滚动时,终端才会使用当前背景色填充整行。你知道吗

在第一次运行时,当当前的编辑提示足够高时,您将看到根本没有打印颜色。在下一次运行时,显示屏滚动,终端检查要清除的颜色—当前活动的背景色。我的默认终端背景不是纯白色(代码中的grey_100),所以我在第一次运行时没有看到任何不同。你知道吗

如果您真的想用背景色打印一整行,请查询终端宽度并打印一行空格。你知道吗

from colored import fg, bg, attr
import os

# from https://stackoverflow.com/questions/566746/how-to-get-linux-console-window-width-in-python
rows, columns = os.popen('stty size', 'r').read().split()

columns = int(columns)

print bg("red")+(columns * ' ')
for i in range(10):
    print bg("yellow")+(' ' * columns)
print attr('reset')

相关问题 更多 >