os.get_terminal_size(),无差别获取当前终端长宽,让你为所欲为。
(笔记模板由python脚本于2024年07月27日 08:30:53创建,本篇笔记适合喜欢钻研的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室

本文质量分:
本文地址: 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系统中的fcntl
和termios
模块来直接与终端进行交互,以获取其尺寸信息。
下面是
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系统中,termios
和fcntl
等库被广泛用于处理终端I/O和属性,但它们在Windows上不可用。相反,Windows提供了自己的API来处理这些任务,而Python的os
模块中的get_terminal_size()
函数已经考虑到了这些差异,并且为不同的操作系统提供了相应