在整个屏幕宽度上打印破折号[重复]
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 上工作。这里没有给出这样的免责声明。)以上是关于在整个屏幕宽度上打印破折号[重复]的主要内容,如果未能解决你的问题,请参考以下文章