python运行窗口大小_如何在Python中获取Linux控制台窗口宽度

如何在Python中获取Linux控制台窗口宽度

有没有办法在python中以编程方式确定控制台的宽度? 我的意思是在没有包装的情况下适合一行的字符数,而不是窗口的像素宽度。

编辑

寻找适用于Linux的解决方案

14个解决方案

228 votes

import os

rows, columns = os.popen('stty size', 'r').read().split()

使用'stty size'命令,根据python邮件列表中的一个线程,它在Linux上是合理通用的。 它将'stty size'命令作为文件打开,从中读取',并使用简单的字符串拆分来分隔坐标。

与os.environ [“COLUMNS”]值(尽管使用bash作为我的标准shell无法访问)不同,数据也将是最新的,而我相信os.environ [“COLUMNS”] value仅在python解释器启动时有效(假设用户从那时起调整了窗口大小)。

brokkr answered 2019-03-04T22:59:05Z

194 votes

不知道为什么它在模块shutil中,但它在Python 3.3中登陆,查询输出终端的大小:

>>> import shutil

>>> shutil.get_terminal_size((80, 20)) # pass fallback

os.terminal_size(columns=87, lines=23) # returns a named-tuple

os模块中有一个低级实现。

现在可以在Python 3.2及以下版本中使用backport:

[https://pypi.python.org/pypi/backports.shutil_get_terminal_size]

Gringo Suave answered 2019-03-04T22:59:48Z

65 votes

使用

import console

(width, height) = console.getTerminalSize()

print "Your terminal's width is: %d" % width

编辑:哦,对不起。 这不是一个python标准的lib,这里是console.py的源码(我不知道它来自哪里)。

该模块似乎是这样的:它检查termcap是否可用,何时可用。 它使用了那个; 如果没有,它检查终端是否支持特殊的ioctl调用,并且也不起作用,它会检查一些shell导出的环境变量。这可能仅适用于UNIX。

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 =

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值