Python如何获取终端尺寸?

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获取终端尺寸
(无差别获取当前终端长宽,让你为所欲为)


本文质量分:

96 96 96

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

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 termiosdef 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 ctypesdef get_terminal_size_windows():h = ctypes.windll.kernel32.GetStdHandle(-12)  # STD_OUTPUT_HANDLEcsbi = 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 + 1sizey = bottom - top + 1return sizex, sizeyelse:# Sometimes it fails on the first call, but succeeds on the secondreturn get_terminal_size_windows()
# 使用函数
width, height = get_terminal_size_windows()
print(f"终端宽度: {width} 列")
print(f"终端高度: {height} 行")

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


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

import subprocessdef 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, linesexcept 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 osdef 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 subprocessdef 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 oscom = 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://xiahunao.cn/news/3269391.html

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

相关文章

【Python系列】Parquet 数据处理与合并:高效数据操作实践

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

unity2D游戏开发08脚本化对象

创建Scriptable Object 在scripts文件夹下创建一个名为Sriptable Objects的文件夹,然后在文件夹里面创建一个名为Item的脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;//[CreateAssetMenu] 是一个属性(Attribute),用于告诉Unity编…

非UI设计师勿入,英文B端界面的确有可取之处.

作为中文的UI设计师,可以从英文B端界面中汲取设计灵感的几种方法: 观察布局和结构: 注意英文B端界面的布局和结构,包括导航栏、侧边栏、内容区域等。观察它们的排列方式、比例和空白间隙的运用,可以借鉴到自己的设计中…

GeoHash原理介绍以及在redis中的应用

GeoHash将二维信息编码成了一个一维信息。降维后有三个好处: 编码后数据长度变短,利于节省存储。利于使用前缀检索当分割的足够细致,能够快速的对双方距离进行快速查询 GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串。 1…

十一、【Python】基础教程-【Python全掌握】六大基础数据类型:布尔类型的终极指南

目录 一、基础类型“布尔型”处理方法 1. 直接赋值和使用 2. 布尔值的逻辑运算 3. 条件语句中的布尔值 4. 布尔值转换 5. 短路逻辑 6. 在循环和迭代中的使用 一、基础类型“布尔型”处理方法 在Python中,布尔类型是一种基本的数据类型,用于表示逻…

3DMAX一键藤球建模插件RattanBall使用方法

3DMAX一键藤球建模插件RattanBall使用教程 3DMAX藤球建模插件RattanBall,一键创建藤球模型,可以设置藤球大小、嵌套层数等,简单实用,一键生成! 【适用版本】 3dMax2018.2及更高版本 【安装方法】 3DMAX一键藤球建模插…

Animate软件基础:创建及插入关键帧

这里讲一下Animate软件中创建或插入关键帧的基本方法。 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animat…

UE5.4内容示例(1)- 学习笔记

https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此示例熟悉一遍UE5的功能 模型与材质部分 StaticMeshes FBX_Import_Options Material_Advanced Material_Decals Material_Instances Material_N…

SpringBoot教程(十七) | SpringBoot集成swagger

SpringBoot教程(十七) | SpringBoot集成swagger 一、Swagger的简述二、SpringBoot集成swagger21. 引入依赖2. 新建SwaggerConfig配置类当 SpringBoot为2.6.x及以上时 需要注意 3.配置Swagger开关4. 给Controller 添加注解(正式使用&#xff0…

Radxa ROCK 5B+开发板基本配置和上手测试

目录 1.ROCK 5B Plus开发板是什么?2.烧录官方系统3.设置ROOT用户4.开发板温度情况5.VNC远程桌面配置6.WIFI模块测速7.M2接口使用注意8.总结 1.ROCK 5B Plus开发板是什么? ROCK 5B(即ROCK 5B Plus,本文用ROCK 5B指代) …

AMQP-核心概念-4

本文参考以下链接摘录翻译: https://www.rabbitmq.com/tutorials/amqp-concepts 绑定 (Bindings) 绑定是交换机用来将消息路由到队列的规则。为了让一个交换机E将消息路由到队列Q,Q必须绑定到E。绑定可以有一个可选属性routing key,有一些类…

VTX326蓝牙TTS语音合成芯片赋能电子称重一体机人机交互新革新

引言 随着科技的飞速发展,零售业正经历着前所未有的变革。北京宇音天下科技有限公司,作为行业的领跑者,推出了革命性的VTX326蓝牙TTS语音合成芯片,为超市、水果店、熟食店、麻辣烫店等零售业态带来了智能化的全新体验。 市场与趋…

【C语言】文件操作详解!!!

目录 为什么要使用文件? 文件概念 1. 什么是文件? 2. 程序文件 3. 数据文件 4. 文件名 文件的使用 1. 文件指针 2. 文件的打开与关闭 文件的顺序读写 1. 顺序读写函数 2. scanf系列与printf系列 文件的随机读写 1. fseek 2. ftell 3. …

数据结构第二讲:顺序表

数据结构第二讲:顺序表 1.线性表2.什么是顺序表3. 静态顺序表4.动态顺序表4.1顺序表基础4.2顺序表的初始化4.3顺序表的销毁4.4顺序表的尾插4.5顺序表的头插4.6顺序表的尾删4.7顺序表的头删4.8顺序表在指定位置之前插入数据4.9顺序表删除指定位置的数据4.10顺序表查找…

京东发行稳定币的背后

加密市场很热,京东也要来分一杯羹? 7月24日,据财联社报道,京东科技旗下的京东币链科技 ( 香港 ) 将在香港发行与港元 1:1锚定的加密货币稳定币,在市场上掀起广泛热议。 由于众所周知的监管原因,国内大厂在早…

深度学习的前沿主题:GANs、自监督学习和Transformer模型

💎 欢迎大家互三:2的n次方_ 💎1. 介绍 深度学习在人工智能领域中占据了重要地位,特别是生成对抗网络(GANs)、自监督学习和Transformer模型的出现,推动了图像生成、自然语言处理等多个领域的创…

【苍穹】完美解决由于nginx更换端口号导致无法使用Websocket

一、报错信息 进行到websocket开发的过程中,遇到了前端报错,无法连接的提示: 经过F12排查很明显是服务端和客户端并没有连接成功。这里就涉及到之前的坑,现在需要填上了。 二、报错原因和推导 应该还记得刚开苍穹的第一天配置前…

2024年第四届网络通信与信息安全国际学术会议(ICNCIS 2024,8月23-25)

2024年第四届网络通信与信息安全国际学术会议(ICNCIS2024)将于2024年8月23-25日于杭州召开。 会议围绕网络通信在信息安全领域中的最新研究成果,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经…

移植QT项目出现无法找到 v143 的生成工具(平台工具集 =“v143”)。若要使用 v143 生成工具进行生成,请安装 v143 生成工具。

由于使用的是visual studio2019,在扩展里没找到msvc v143的工具集,这时候可能需要升级下版本,比如换用visual studio2022 或者在三个地方更改所使用的工具集,一般来讲只要v143编译能通过的v142编译也能通过,所以换用v…

数据结构 —— B+树和B*树及MySQL底层引擎

数据结构 —— B树和B*树及MySQL底层引擎 B树B*树B树的应用B树在MySQL中的应用MyISAMInnoDB 我们之前学习了B树的基本原理,今天我们来看看B树的一些改良版本——B树和B*树。如果还没有了解过的小伙伴可以点击这里: https://blog.csdn.net/qq_67693066/ar…