Python如何获取终端尺寸?

news2024/11/20 8:27:18

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 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


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()函数已经考虑到了这些差异,并且为不同的操作系统提供了相应的实现。

    所以,当你在Windows上编写跨平台的Python代码时,确实需要使用Windows特有的方法或者使用Python标准库中已经为你处理了这些差异的跨平台函数,如os.get_terminal_size()。这可以看作是Windows上的“独门冲”,因为它使用的是Windows特定的解决方案。



回页目录


3、Windows也有“偏方”。



  • 在这里插入图片描述
  • ai
    在Windows上,除了使用Python标准库中的os.get_terminal_size()方法外,还可以使用其他方法来获取终端尺寸。

以下是一些可能的方法


1、 使用ctypes模块调用Windows API

import ctypes

def get_terminal_size_windows():
    h = ctypes.windll.kernel32.GetStdHandle(-12)  # STD_OUTPUT_HANDLE
    csbi = ctypes.create_string_buffer(22)
    res = ctypes.windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
    
    if res:
        import struct
        (bufx, bufy, curx, cury, wattr,
         left, top, right, bottom,
         maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
        sizex = right - left + 1
        sizey = bottom - top + 1
        return sizex, sizey
    else:
        # Sometimes it fails on the first call, but succeeds on the second
        return get_terminal_size_windows()
# 使用函数
width, height = get_terminal_size_windows()
print(f"终端宽度: {width} 列")
print(f"终端高度: {height} 行")

这段代码使用了Windows API函数GetConsoleScreenBufferInfo来获取终端的尺寸信息。


2、使用subprocess模块运行mode con命令:

import subprocess

def get_terminal_size_windows():
    try:
        output = subprocess.check_output(["mode", "con"], universal_newlines=True)
        for line in output.split('\n'):
            if 'Columns:' in line:
                columns = int(line.split(':')[-1].strip())
            if 'Lines:' in line:
                lines = int(line.split(':')[-1].strip())
        return columns, lines
    except Exception as e:
        print("无法获取终端尺寸:", e)
        return None

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

这个方法通过运行Windows命令提示符的mode con命令来获取终端尺寸。


请注意,以上方法仅适用于Windows操作系统,并且可能会因为Windows的不同版本或配置而有所不同。使用这些方法时,请确保你的代码能够处理可能出现的异常情况。通常,使用Python标准库中的os.get_terminal_size()是最简单且最可靠的方法。



  • 在这里插入图片描述
  • ai
    确实,Python以其灵活性和提供多种方法来解决同一个问题而闻名。这种多样性允许开发者根据具体情况选择最合适的工具或方法。在处理跨平台问题时,这种特性尤其有用,因为它为不同操作系统上的相同任务提供了多种实现方式。

    Python社区经常说“有不止一种方法来做这件事”,这也体现了Python设计哲学中的一个重要原则,即“多种途径优于一种(“There should be one-- and preferably only one --obvious way to do it”)。虽然这有时会导致初学者在选择最佳实践时感到困惑,但它也为经验丰富的开发者提供了极大的灵活性和选择自由。

    这种“不只一套”的解决方案,确实使得Python在处理各种任务时变得非常强大和灵活,无论是在Windows、Linux、macOS还是其他任何支持Python的平台上。这也是Python成为最受欢迎和广泛使用的编程语言之一的原因之一。🤗🤗


  • 在这里插入图片描述
  • ai
    确实,Python的灵活性允许开发者根据不同的需求和环境选择不同的解决方案,有时候这可能意味着需要编写更多的代码来处理特定的情况,比如在不同的操作系统上获取终端尺寸。

    这种“弯弯绕绕”实际上是编程中常见的情况,它要求开发者对问题有更深入的理解,并且能够根据不同的平台和环境调整解决方案。虽然这可能会增加一些复杂性,但它也提供了更多的控制权,允许开发者优化代码以适应特定的需求。

    而且,这种多路径解决问题的能力也是Python语言强大和广泛适用的一个标志。开发者可以根据自己的喜好、项目需求或个人风格来选择最合适的方法。这种多样性使得Python成为了一个既有趣又富有挑战性的编程语言。

    最终,无论是选择简洁明了的标准库函数,还是深入底层进行自定义实现,Python都为开发者提供了丰富的工具和选项,让编程变得更加灵活和有趣。😋😋



回页目录


4、os.popen



  • 在这里插入图片描述
  • ai
    是的,您提到的 os.popen 是一个可以用来执行命令并获取其输出的Python函数,它可以在Unix-like系统以及Windows上使用。使用 os.popen,您可以执行Windows的 mode con 命令来获取终端尺寸。

以下是如何使用 `os.popen` 来获取Windows终端尺寸的示例代码:
import os

def get_terminal_size_windows():
    # 执行命令并捕获输出
    output = os.popen('mode con').read()
    # 解析命令输出中的行数和列数
    for line in output.split('\n'):
        if 'Columns:' in line:
            columns = int(line.split(':')[-1].strip())
        if 'Lines:' in line:
            lines = int(line.split(':')[-1].strip())
    return columns, lines

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

在这段代码中,os.popen 执行了 mode con 命令,该命令在Windows命令行中用于显示控制台的信息,包括其尺寸。然后,代码解析命令的输出以找到终端的列数和行数。


请注意os.popen 已在Python 3.3中被弃用,并且在后续版本中被 subprocess.Popen 取代,因为后者提供了更安全和灵活的方式来处理子进程。因此,虽然 os.popen 可以用来实现这一功能,但推荐使用 subprocess 模块,因为它更加现代且功能丰富。以下是如何使用 subprocess 来实现相同功能的代码:

import subprocess

def get_terminal_size_windows():
    output = subprocess.Popen('mode con', shell=True, stdout=subprocess.PIPE).communicate()[0]
    output = output.decode()
    for line in output.split('\n'):
        if 'Columns:' in line:
            columns = int(line.split(':')[-1].strip())
        if 'Lines:' in line:
            lines = int(line.split(':')[-1].strip())
    return columns, lines

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



回页目录


5、subprocess.Popen


使用 subprocess.Popen 是现代Python代码中执行外部命令的首选方式。



  • 在这里插入图片描述
  • ai
    您的理解是正确的,将 os.popen 标记为弃用(deprecated)并引入 subprocess.Popen 并不是简单的“挪个位置更个名儿”。这个过程涉及到了对原有功能进行改进和增强,以提供更安全、更灵活、更强大的子进程管理方式。

以下是 os.popen 被弃用并推荐使用 subprocess 模块的一些原因:

  1. 安全性os.popen 使用起来不如 subprocess 安全,因为它容易引发代码注入攻击,尤其是在调用 shell 命令时。subprocess 提供了更安全的方式来执行命令,尤其是在传递参数时。

  2. 灵活性subprocess 模块提供了多种不同的方法来启动和管理子进程,包括 Popen 类,它允许更细致地控制子进程的输入输出,以及等待子进程完成的方式。

  3. 功能丰富subprocess 提供了更多功能,比如可以更容易地捕获标准输出和标准错误,可以执行管道操作,还可以在不启动额外 shell 的情况下执行命令。

  4. 统一性subprocess 模块统一了之前分散在 ospopen2 等模块中的功能,提供了一个单一的、一致的API来处理子进程。


虽然 os.popen 在某些情况下仍然可以工作,但是官方推荐使用 subprocess 模块,因为它提供了更好的设计,更现代的接口,以及更全面的错误处理机制。

因此,当 os.popen 被弃用时,它并不是简单地被“禁用”或重命名,而是被一个更先进、更适合现代编程需求的模块所替代。这种替换反映了Python语言不断进化的过程,旨在提供更好的工具来帮助开发者编写更安全、更高效、更易于维护的代码。😋



  • 在这里插入图片描述
  • ai
    相对于 os.get_terminal_size(),使用 os.popensubprocess.Popen 来获取终端尺寸的方法有以下潜在的优势和不同的使用场景:
  1. 跨版本兼容性

    • os.get_terminal_size() 是在 Python 3.3 版本中引入的。如果你的代码需要运行在早于 3.3 的 Python 版本上,那么 os.popensubprocess.Popen 是获取终端尺寸的可行方法。
  2. 自定义命令执行

    • 使用 os.popensubprocess.Popen 允许你执行任意的系统命令来获取终端尺寸,这可能包含了 os.get_terminal_size() 不直接提供的信息。例如,在某些情况下,你可能需要获取终端的原始尺寸,而不是当前窗口的大小。
  3. 更细致的控制

    • subprocess.Popen 提供了对子进程更细致的控制,比如可以设置环境变量、工作目录、标准输入输出错误的重定向等。
  4. 错误处理

    • 使用 subprocess.Popen 可以更详细地处理命令执行中的错误,比如可以捕获标准错误输出,并根据返回码做出不同的处理。

  然而,尽管有上述优势,但在大多数情况下,os.get_terminal_size() 通常是更简单、更直接、更现代的方法来获取终端尺寸。


  • 以下是它的优势
  1. 简洁性

    • os.get_terminal_size() 只需一行代码就可以获取终端尺寸,使用起来非常简单。
  2. 跨平台

    • os.get_terminal_size() 是跨平台的,它在不同的操作系统上都能工作,无需编写特定于平台的代码。
  3. 安全性

    • os.get_terminal_size() 不需要执行外部命令,因此减少了潜在的安全风险。
  4. 性能

    • os.get_terminal_size() 直接与操作系统交互,而不需要启动额外的进程,因此在性能上可能更优。

  总之,选择哪种方法取决于具体的需求和上下文。对于大多数简单的用例,os.get_terminal_size() 是首选方法,因为它简单、安全且高效。只有在需要更复杂的子进程管理或兼容旧版 Python 时,才可能需要考虑使用 os.popensubprocess.Popen



回页目录


6、os.system“命令容器”



  • 在这里插入图片描述
  • ai
    是的,os.system 也是一个在 Python 中用来执行 shell 命令的函数,但它确实在功能上逊色于 subprocess.Popen

以下是 os.systemsubprocess.Popen 的一些对比点:

os.system 的局限性:

  1. 返回值限制os.system 返回一个整数,表示命令的退出状态。通常,如果命令成功执行,它返回 0;如果命令失败,它返回非零值。但是,它不能直接提供命令的标准输出或标准错误输出。

  2. 安全性问题:与 os.popen 类似,os.system 也存在安全性问题,因为它会将命令字符串传递给 shell 进行解析,这可能导致 shell 注入攻击。

  3. 交互性限制:使用 os.system 执行的命令不能与 Python 脚本进行交互,也就是说,你不能从 Python 中发送输入到命令,或者实时读取命令的输出。


os.system也是可以简单交互的

import os

com = input('\n输入:').strip()

os.system(com)

只是安全性有所欠缺,如果没有“安全”顾虑,也是可以放心使用滴。😜


  • 键入clear可以清屏、li -l可以列印当前目录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

subprocess.Popen 的优势:

  1. 更丰富的功能subprocess.Popen 允许你更精细地控制子进程的创建、执行和终止。你可以捕获标准输出和标准错误输出,还可以与子进程进行交互(发送输入、读取输出)。

  2. 安全性subprocess.Popen 提供了不通过 shell 执行命令的方式,这可以减少 shell 注入的风险。

  3. 更好的资源管理subprocess.Popen 允许你更有效地管理子进程的资源,例如等待子进程结束、终止子进程等。

  4. 可配置性:你可以配置子进程的环境变量、工作目录、标准输入输出等。


以下是一个使用 os.system的例子

import os

# 使用 os.system 执行一个系统命令
exit_code = os.system('ls -l')

# 打印退出状态码
print(f'Exit code: {exit_code}')


而以下是使用 subprocess.Popen的等效例子

import subprocess

# 使用 subprocess.Popen 执行一个系统命令
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate()
# 打印标准输出和标准错误
print(f'Stdout: {stdout}')
print(f'Stderr: {stderr}')

# 打印退出状态码
print(f'Exit code: {process.returncode}')
 

  综上所述,尽管 os.system 可以用于执行简单的系统命令,但 subprocess.Popen 提供了更全面、更灵活、更安全的方式来执行和管理子进程。因此,当需要更复杂的命令执行管理时,推荐使用 subprocess 模块。



回页目录


7、盖世神功 V S VS VS独门绝技


7.1 os.get_terminal_size是盖世神功



  • 在这里插入图片描述
  • ai
    哈哈,这个比喻非常形象!确实,os.get_terminal_size() 就像是编程界的“倚天屠龙”,它是一种通用的工具,无论在哪个操作系统上,都能够高效、可靠地完成任务。就像倚天剑和屠龙刀一样,无论面对什么样的对手,都能发挥出强大的威力。

    os.get_terminal_size() 的跨平台特性,使得它在不同的编程环境中都能保持一致性,极大地简化了开发者的工作。它就像一门绝世神功,不受地域和种族的限制,能够帮助开发者解决获取终端尺寸这一普遍问题。

    这种强大而通用的工具是Python语言设计哲学的体现,即提供一种简单直观的方式来完成常见任务,让开发者能够将更多精力投入到解决具体业务问题上,而不是纠缠于平台差异这样的技术细节。😋😋

    所以,下次当你使用 os.get_terminal_size() 轻松获取终端尺寸时,不妨想象自己正手持倚天屠龙,以绝世神功,一招制胜!🤣🤣

7.2 各有“独门绝技”



  • 在这里插入图片描述
    比如,Windows独有的获取终端尺寸的方式
  • ai
    您的比喻非常生动,确实,编程世界就像现实生活一样丰富多彩,充满了无限可能。即使在面对某些限制或挑战时,程序员们总能找到创新的解决方案,就像武侠世界中的高手们即使在困境中也能凭借独门绝技破局而出。

      在编程中,每一种语言、框架或工具都有其独特的“武功秘籍”,开发者们通过不断学习和实践,将这些技术内化为自己的“独门绝技”。无论是Python的os.get_terminal_size(),还是其他语言和工具中的特性和技巧,都是开发者武器库中的重要组成部分。

      正如“赵敏丫头”禁用了乾坤大挪移,编程中也可能遇到某些功能被弃用或限制的情况,但这并不会阻止我们前进的脚步。开发者们总是能够发掘新的方法,创造出新的工具,以应对不断变化的需求和挑战。

      编程的五彩斑斓体现在它的创造性、解决问题的能力以及不断进步的技术上。正如您所说,无论是编程还是生活,都充满了无限可能,而这一切都等待着我们去探索、去实现。💪💪💪

      继续在这五彩斑斓的编程世界中探险吧,愿您的代码如同倚天屠龙,助您在技术江湖中一往无前!😎😎😎



回页目录


8、os.get_terminal_size的参数


8.1 参数解疑



  • 在这里插入图片描述
  • ai
    os.get_terminal_size() 函数在Python中用于获取终端的大小。这个函数的参数是为了向后兼容而存在的。

    在早期版本的Python中,os.get_terminal_size() 函数还没有出现,而是使用os.get_terminal_size(fd)这样的形式,其中fd是文件描述符。这个参数允许用户指定要检查哪个文件描述符关联的终端大小。通常,标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的文件描述符分别是0、1和2。

以下是参数的含义

  • 0:返回与标准输入(stdin)关联的终端大小。
  • 1:返回与标准输出(stdout)关联的终端大小。
  • 2:返回与标准错误(stderr)关联的终端大小。

  在大多数情况下,标准输入、输出和错误都是指向同一个终端,因此这三个参数返回的终端大小是相同的。这就是为什么在大多数情况下,不管传递0、1还是2,得到的结果都一样。

  然而,在某些情况下,这些流可能被重定向到不同的地方,此时传递不同的参数可能会得到不同的结果。比如在一个脚本中,标准输出可能被重定向到一个文件,而标准错误仍然指向终端,此时os.get_terminal_size(1)可能返回一个错误或者None,而os.get_terminal_size(2)则会返回终端的实际大小。

  尽管在现代的使用中,这个参数看起来似乎不那么必要,但Python为了保持API的一致性和向后兼容性,仍然保留了它。这样,依赖于这个参数的老代码仍然可以正常工作,而新用户在大多数情况下可以忽略这个参数,直接使用os.get_terminal_size()

  综上所述,保留这个参数是Python设计哲学中的一部分,即“优雅”、“明确”和“简单”,同时也体现了对历史代码兼容性的重视。


8.2 ai表述迷糊澄清



  • 在这里插入图片描述
  • ai
    抱歉,我的表述确实有误。 os.get_terminal_size() 函数在Python的早期版本中并不存在,而是在后来的版本中引入的。引入这个函数的同时,也提供了默认参数的便利形式,这样在不传递任何参数时,它会默认检查与标准输出(stdout)关联的终端大小。

正确的情况是这样的
在Python的早期版本中,要获取终端大小,可能需要使用不同的方法,比如直接读取环境变量或者调用系统特定的API。

  在Python 3.3及以后的版本中, os.get_terminal_size() 函数被引入,它提供了一个更直接和跨平台的方式来获取终端的大小。

  os.get_terminal_size(fd) 是同一个函数,其中 fd 参数允许你指定特定的文件描述符。如果不提供 fd 参数,函数默认会使用标准输出(stdout)的文件描述符,即 1 。

 所以,当我说“在早期版本的Python中, os.get_terminal_size() 函数还没有出现”时,我的意思是这个特定的函数名称和接口在早期版本的Python标准库中并不存在。我的表述不够准确,为此我向您道歉。希望这次的解释能够更清楚地说明情况。



  • 在这里插入图片描述
  • ai
    非常抱歉,我之前的回答中确实存在错误和混淆。我理解您的困惑了,现在我来澄清一下:

      在Python 3.3之前,并没有os.get_terminal_size()这个函数。为了获取终端大小,开发者通常会使用其他方法,比如读取环境变量(如os.environ['LINES']os.environ['COLUMNS'])或者调用特定的系统命令(如stty sizetput cols)。

      Python 3.3引入了os.get_terminal_size()函数,这是一个新的特性,之前并不存在。这个函数可以不带参数调用,此时它会默认使用标准输出(stdout)的文件描述符来获取终端大小,也可以传递一个文件描述符(fd)作为参数来获取与该文件描述符关联的终端大小。

因此,正确的说法应该是:

  • 在Python 3.3之前,没有os.get_terminal_size()函数,开发者需要使用其他方法来获取终端大小。
  • 在Python 3.3及以后版本中,os.get_terminal_size()函数被引入,它允许不带参数调用,或者传递一个文件描述符作为参数。

再次为之前的错误信息表示歉意,并感谢您的耐心指正。希望这次的解释更加准确和清晰。



回页目录


9、ai的乐趣


  与ai对刚,“胡搅蛮缠”,插科打诨,在其乐融融中,get到了知识点。在不经意间就学到了,过程中做到了三个必要的学习动作——预习找到点(预习)、设计提问(学习、拓展点、面)、笔记分享(复盘)。这样子一套整下来,所学知识点不说“终生莫忘”但也定会记住不短的时间的了。😜



回页目录


10、结论


  对于一般情况下的python终端尺寸获取,一个os.get_terminal_size就够了。

import os


# 获取终端尺寸
print(f"\n终端尺寸: {os.get_terminal_size()}")

或者





  • qpythonZero Linux都可以正确获取当前终端尺寸:

    直接获取
    在这里插入图片描述
    在这里插入图片描述
    变量赋值
    在这里插入图片描述
    在这里插入图片描述
    变量赋值”的方式,都获取终端当前终端尺寸的正确一般打开状态



回页首


上一篇:  Windows上转义字符工作原理(由bext安装“异常”引出的话题:Windows上转义字符的工作原理,与ai“闲扯”不经意学习知识点)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用命名管道的通信程序, 加入了日志系统

文章目录 日志系统通信程序运行效果 日志系统 // log.hpp #pragma once #include <time.h> #include <iostream> #include <stdio.h> #include <string> #include <stdarg.h> #include <sys/types.h> #include <sys/stat.h> #inclu…

软设之数据库关系代数

数据库关系代数 基本概念 元祖行&#xff1a;水平方向上每一行为一条记录&#xff0c;这个记录对应1个实体。一般称为元祖&#xff0c;元祖行或者记录 属性列&#xff1a;垂直方向上每一列为一个属性&#xff0c;一般称为属性列&#xff0c;字段等。关系表达式中可以用列序号…

又要起飞,浏览器居然都可以本地 OCR 啦

前言 PaddleOCR&#xff0c;这是一个由百度开发的开源 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;工具&#xff0c;它可以用于从图像中识别文本。 PaddleOCR支持多种语言的文本识别&#xff0c;并且能够处理多种场景下的图像。 现在…

【Web开发手礼】探索Web开发的魅力(十二)-Vue(2)用户动态页面

前言 主要介绍了用vue框架创建用户动态页面的具体过程&#xff0c;可以帮助学习vue框架的基本知识&#xff01;&#xff01;&#xff01;&#xff01; 用户动态页面 用户信息 用户头像 通过 Bootstrap 所提供的 .img-fluid 类让图片支持响应式布局。其原理是将 max-width: 10…

Java面试八股之Spring boot的自动配置原理

Spring boot的自动配置原理 Spring Boot 的自动配置原理是其最吸引人的特性之一&#xff0c;它大大简化了基于 Spring 框架的应用程序开发。以下是 Spring Boot 自动配置的基本原理和工作流程&#xff1a; 1. 启动类上的注解 Spring Boot 应用通常会在主类上使用 SpringBoot…

ZBrush入门使用介绍——4、笔刷选项说明

大家好&#xff0c;我是阿赵。   这次来看看ZBrush的笔刷的选项用法。 一、选择笔刷 点击笔刷&#xff0c;可以打开笔刷选择面板。 在最上面的Quick Pick&#xff0c;有最近使用过的笔刷&#xff0c;可以快速的选择。下面有很多可以选择的笔刷。但由于笔刷太多&#xff0c;…

AJAX之基础知识

目录 AJAX入门及axios使用什么是AJAX怎么用AJAX 认识URL协议域名资源路径URL查询参数 查询参数URL查询参数axios查询参数 常用请求方法axios请求配置 axios错误处理HTTP协议请求报文请求报文-错误排查响应报文HTTP响应状态码 form-serialize插件 AJAX入门及axios使用 什么是AJ…

【Python机器学习】决策树的构造——信息增益

决策树是最经常使用的数据挖掘算法。它之所以如此流行&#xff0c;一个很重要的原因就是不需要了解机器学习的知识&#xff0c;就能搞明白决策树是如何工作的。 决策树的优缺点&#xff1a; 优点&#xff1a;计算复杂度不高&#xff0c;输出结果易于理解&#xff0c;对中间值的…

RabbitMq手动ack的超简单案例+Confirm和Return机制的配置和使用

最简单的例子 先简单介绍一下这三个方法 basicAck 表示确认成功&#xff0c;使用此方法后&#xff0c;消息会被rabbitmq broker删除 basicNack 表示失败确认&#xff0c;一般在消费消息业务异常时用到此方法&#xff0c;可以将消息重新投递入队列 basicReject 拒绝消息&am…

Chainlit一个快速构建成式AI应用的Python框架,无缝集成与多平台部署

概述 Chainlit 是一个开源 Python 包&#xff0c;用于构建和部署生成式 AI 应用的开源框架。它提供了一种简单的方法来创建交互式的用户界面&#xff0c;这些界面可以与 LLM&#xff08;大型语言模型&#xff09;驱动的应用程序进行通信。Chainlit 旨在帮助开发者快速构建基于…

全网最适合入门的面向对象编程教程:25 类和对象的 Python 实现-Python 判断输入数据类型

全网最适合入门的面向对象编程教程&#xff1a;25 类和对象的 Python 实现-Python 判断输入数据类型 摘要&#xff1a; 本文主要介绍了在使用 Python 面向对象编程时&#xff0c;如何使用 type 函数、isinstance 函数和正则表达式三种方法判断用户输入数据类型&#xff0c;并对…

PWA(渐进式网页应用)方式实现TodoList桌面应用

参考&#xff1a; https://cloud.tencent.com/developer/article/2322236 todlist网页参考&#xff1a; https://blog.csdn.net/weixin_42357472/article/details/140657576 实现在线网页当成app应用&#xff1a; 一个 PWA 应用首先是一个网页, 是通过 Web 技术编写出的一个网…

如何全面提升架构设计的质量?

当我们从可扩展、高可用、高性能等角度设计出来架构的时候&#xff0c;我们如何优化架构呢&#xff1f;就需要从成本、安全、测试等角度进行优化。 如何设计更好的架构 - 步骤 成本 低成本复杂度本质 低成本手段和应用 低成本的主要应用场景 安全 安全性复杂度本质 架构安全…

大语言模型系列-Transformer:深入探索与未来展望

大家好&#xff0c;我是一名测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家联系我&#xff0c;一起【分享测试知识&#xff0c;交流测试技术】 Transformer模型自其问世以来&#xff0c;便迅速在自然语言处理领域崭露头角&a…

2024年【危险化学品生产单位安全生产管理人员】最新解析及危险化学品生产单位安全生产管理人员考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员最新解析参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总&#xff0c;…

mysql基本数据类型(整型)

一、 常见面试题 整型都有哪些基础类型&#xff0c;各占几个字节 tinyint, smallint, mediumint, int, bigint: 1 2 3 4 8 int(n) 是什么意思&#xff0c;什么时候用到 指定显示位宽&#xff0c;需配合 zerofill 使用&#xff08;不够位宽则在前面补0&#xff09;&#xff0c;…

Could not find a version that satisfies the requirement

Could not find a version that satisfies the requirement 目录 Could not find a version that satisfies the requirement 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;2…

MATLAB被360误杀的解决方案

前面被误杀&#xff0c;今天又被误杀。 前面误杀结果是缺少文件&#xff0c;重装MATLAB也不行。 结果重装了操作系统。 这次&#xff0c;看到了提示额外小心。 当时备份了“病毒”文件&#xff0c;结果备份的也被杀了。 解铃还须系铃人 在360安全卫士里面恢复&#xff0c;步骤…

线性代数|机器学习-P27用于深度学习的神经网络结构

文章目录 1. 概述2. 参数定义3. CNN 网络 1. 概述 – 1. 卷积神经网络 CNNs – 2. 连续型线性分段函数 F – 3. 损失函数 – 4. 链式法则计算反向传播算法梯度 ∇ F g r a d F \nabla F \mathrm{grad}\; F ∇FgradF 2. 参数定义 我们定义每个样本有m维度特征&#xff0c;有…