Python如何获取终端尺寸?

os.get_terminal_size(),无差别获取当前终端长宽,让你为所欲为。


(笔记模板由python脚本于2024年07月27日 08:30:53创建,本篇笔记适合喜欢钻研的coder翻阅)


【学习的细节是欢悦的历程】


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


os.get_terminal_size()
Python获取终端尺寸
(无差别获取当前终端长宽,让你为所欲为)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/140722981

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ Python获取终端尺寸
    • 1、基本方式
    • 2、Windows是“独门冲”!
    • 3、Windows也有“偏方”。
    • 4、os.popen
    • 5、subprocess.Popen
    • 6、os.system“命令容器”
    • 7、盖世神功 V S VS VS独门绝技
      • 7.1 os.get_terminal_size是盖世神功
      • 7.2 各有“独门绝技”
    • 8、os.get_terminal_size的参数
      • 8.1 参数解疑
      • 8.2 ai表述迷糊澄清
    • 9、ai的乐趣
    • 10、结论


◆ Python获取终端尺寸


1、基本方式


  在Python中,你可以使用标准库中的os模块来获取终端的尺寸。


以下是一个示例代码,展示了如何获取终端的行数和列数

import os
import struct
import fcntl
import termios

def get_terminal_size():
    """获取终端尺寸"""
    th, tw, hp, wp = struct.unpack('HHHH',
        fcntl.ioctl(0, termios.TIOCGWINSZ,
        struct.pack('HHHH', 0, 0, 0, 0)))
    return tw, th

# 使用函数
width, height = get_terminal_size()
print(f"终端宽度: {
     
     width} 列")
print(f"终端高度: {
     
     height} 行")

  这个方法适用于Unix-like系统,包括Linux和macOS。如果你在Windows上,可以使用os.get_terminal_size()方法,它是Python 3.3及以上版本中os模块的一部分:

import os

# 在Windows上获取终端尺寸
width, height = os.get_terminal_size()
print(f"终端宽度: {
     
     width} 列")
print(f"终端高度: {
     
     height} 行")

os.get_terminal_size()方法同样适用于Unix-like系统,因此如果你想要跨平台的解决方案,可以直接使用这个方法。



  • 在这里插入图片描述
  • ai
    不,前面提供的代码块并不是os.get_terminal_size方法的源码。os.get_terminal_size()是Python标准库中的一个函数,它的源码是C语言编写的,并内置于Python解释器中。而我提供的代码是一个使用Python编写的函数,它使用了Unix-like系统中的fcntltermios模块来直接与终端进行交互,以获取其尺寸信息。

下面是os.get_terminal_size()的简单使用示例

import os

# 获取终端尺寸
size = os.get_terminal_size()

# 打印终端尺寸
print(f"行数: {
     
     size.lines}")
print(f"列数: {
     
     size.columns}")

这段代码调用了os.get_terminal_size()函数,它会返回一个os.terminal_size对象,该对象包含终端的行数和列数。


  如果你想要查看os.get_terminal_size()的源码,你需要查看Python标准库的C语言实现部分。这些源码通常位于Python源代码仓库的Modules/posixmodule.c文件中。但是,这些源码是高度专业的,通常需要具备C语言和Python内部机制的知识才能理解。如果你确实想查看,可以访问Python的官方GitHub仓库或者下载Python源代码来查找相关实现。



  • 在这里插入图片描述
  • ai
    第一段代码块,它使用了 fcntl 和 termios 模块,主要是针对Unix-like系统(包括Linux和macOS)设计的,并且不适用于Windows。

      在Windows上, fcntl 和 termios 模块不可用,因为它们是Unix系统的特定功能。如果你在Windows上运行那个代码块,你会遇到导入错误。

      为了获取Windows系统的终端尺寸,你应该使用 os.get_terminal_size() ,如我之前所述。这个方法是跨平台的,可以在Windows、Linux和macOS上正常工作。

以下是适用于Windows系统的代码示例

 
import os

# 获取终端尺寸,适用于Windows
size = os.get_terminal_size()

# 打印终端尺寸
print(f"行数: {
     
     size.lines}")
print(f"列数: {
     
     size.columns}")


  总之, os.get_terminal_size() 是适用于所有主流操作系统的官方方法,而使用 fcntl 和 termios 的代码块仅适用于Unix-like系统。



回页目录


2、Windows是“独门冲”!



  • 在这里插入图片描述
  • ai
    是的,可以这么说。在不同的操作系统上,获取终端尺寸的方法确实有所不同,这通常是由于操作系统提供的API和功能差异造成的。在Windows上,获取终端尺寸的方法与Unix-like系统(如Linux和macOS)存在差异,因此需要使用专门为Windows设计的接口。

    在Unix-like系统中,termiosfcntl等库被广泛用于处理终端I/O和属性,但它们在Windows上不可用。相反,Windows提供了自己的API来处理这些任务,而Python的os模块中的get_terminal_size()函数已经考虑到了这些差异,并且为不同的操作系统提供了相应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值