在整个屏幕宽度上打印破折号[重复]

Posted

技术标签:

【中文标题】在整个屏幕宽度上打印破折号[重复]【英文标题】:Print dashes across full width of screen [duplicate] 【发布时间】:2015-01-12 00:29:20 【问题描述】:

我希望打印一个破折号"-",直到用户屏幕结束。

基本上,我的程序会打印一行文本,然后在其下方打印一行破折号,然后再打印另一行文本。这样做是为了让用户可以轻松地区分第一行和第二行。

类似这样的:

First line of text
--------------------------------------------------------------------------------------
Second line of text

有没有办法让我使用标准的 python 2.6 库来做到这一点。我无法使用任何其他库,例如 texttable 或更新版本的 Python。

【问题讨论】:

你在看how to get console window width吗? 这适用于哪个操作系统? @jonrsharpe:我相信我可以使用如何获取控制台窗口宽度来找出窗口的宽度。有很多数据呈现给用户,如果我留下一个空行,它是不可读的。 @fredtantini:是的,我相信这就是我要找的东西,谢谢!我会审查它,看看我是否可以让它为我工作。 @Thibaut:这是针对 Linux 操作系统的。 【参考方案1】:

2.6?好吧,那已经很老了。 这应该有效: (取自How to get Linux console window width in Python)

def getTerminalSize():
    import os
    env = os.environ
    def ioctl_GWINSZ(fd):
        try:
            import fcntl, termios, struct, os
            cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
        '1234'))
        except:
            return
        return cr
    cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
    if not cr:
        try:
            fd = os.open(os.ctermid(), os.O_RDONLY)
            cr = ioctl_GWINSZ(fd)
            os.close(fd)
        except:
            pass
    if not cr:
        cr = (env.get('LINES', 25), env.get('COLUMNS', 80))

        ### Use get(key[, default]) instead of a try/catch
        #try:
        #    cr = (env['LINES'], env['COLUMNS'])
        #except:
        #    cr = (25, 80)
    return int(cr[1]), int(cr[0])

(width, height) = getTerminalSize()

print "-" * width

【讨论】:

这个答案和***.com/questions/566746/…几乎一样 ...它是用来获取它的。对不起 @NoahOvercash 正确的方法是将问题标记为重复,如果您认为它已经解决,则链接到上一个答案。 -1。这个答案主要是一个剪切和粘贴的工作。真正的问题是原始答案的大部分上下文和 cmets 都丢失了。另一个问题是这在 Windows 上不起作用。在我的 150x47 的 Windows 命令提示符上,它返回 80x25。 (可以不在 Windows 上工作。源答案承认这可能只在 Unix 上工作。这里没有给出这样的免责声明。)

以上是关于在整个屏幕宽度上打印破折号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

序列(字符串)乘法示例

旋转屏幕后ImageView的宽度和高度返回0 [重复]

在整个屏幕上垂直对齐元素[重复]

HTML5如何在特定的div类或id上打印屏幕[重复]

屏幕的 100% 高度和宽度 [重复]

从大小为 10 的数组中生成 1000 个随机数并找到数字的平均值并将它们打印在屏幕上 [重复]