python - 这段 Python 代码中发生了什么来获取终端窗口大小?

标签 python

此代码返回终端窗口的大小。

def gettermsize():
    s = struct.pack("HHHH", 0, 0, 0, 0)
    a = struct.unpack('hhhh', fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ , s))
    return (a[0], a[1])

它实际上在做什么?

最佳答案

一般来说,ioctrl 调用将允许运算符(operator)查询和/或设置物理或逻辑设备的各种特征 - 哪些值可用以及如何获取它们特定于设备和设备类型。在本例中,正在查询标准输出控制台(sys.stdout.fileno() 提供的句柄))以查找终端设备 (termios) ,窗口大小 (TIOCGWINSZ),并且它需要一个 4 个 16 位无符号值的结构才能工作 (s),它返回 4 个有符号值,其中前两个大概用作高度和宽度。需要打包/解包值的原因是这实际上是直接调用 C 代码。

关于python - 这段 Python 代码中发生了什么来获取终端窗口大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637640/

相关文章:

python - Google OpenID 和 OAuth - 如何获取访问 token

python - 使用 matplotlib 绘制时间值

python - .append() 不会将列表添加到列表列表中

python - 使用 vtk 时导入的 undefined variable

相当于 "find -type f"的 Python

python - 在 python 中,是否有与 isinstance 等效的静态?

python - 鱼眼校准 OpenCV Python

python - 为什么照片图像不存在?

python - 新的 Pandas 产品/求和逻辑

python - 无法在服务器上安装tensorflow