You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm中os.get_terminal_size()报OSError:25的原因及解决办法

搞定PyCharm控制台os.get_terminal_size()报错的问题

嘿,我来帮你拆解这个问题:

首先说这个错误OSError: [Errno 25] Inappropriate ioctl for device到底啥意思——简单讲就是,你调用的os.get_terminal_size()函数依赖的系统接口(ioctl)在PyCharm的控制台环境里没法用,因为这个环境不是真正的终端设备。

为啥终端里没问题?因为Ubuntu自带的终端是标准的TTY/PTY设备,它支持这类获取窗口尺寸的终端控制指令;但PyCharm的Python控制台是个模拟的交互环境,它只是模拟了输入输出的样子,并没有实现终端设备的底层接口,所以函数调用就崩了。

接下来给你几个解决办法,按需选:

办法1:用兼容函数做兜底

Python自带的shutil.get_terminal_size()比os.get_terminal_size()更友好,它会在无法获取真实终端尺寸时返回你指定的默认值。你可以写个兼容函数,既保留原生函数的功能,又能应对PyCharm的情况:

import os
from shutil import get_terminal_size

def get_terminal_size_safe():
    try:
        # 先尝试原生方法
        return os.get_terminal_size()
    except OSError:
        # 失败就用shutil的兼容实现,返回默认80列24行
        return get_terminal_size(fallback=(80, 24))

# 用这个函数代替原来的调用
size = get_terminal_size_safe()
print(f"当前控制台尺寸:{size.columns}列,{size.lines}行")

办法2:改用PyCharm的Terminal标签页

如果你就是要获取真实的终端尺寸,别用Python控制台了,直接打开PyCharm底部的Terminal标签——这个就是和你Ubuntu系统终端完全一样的环境,在这里运行代码,os.get_terminal_size()就能正常返回结果。

办法3:开启终端模拟(部分版本有效)

试试给你的运行配置开终端模拟:

  • 点击PyCharm右上角的运行配置下拉框,选择"Edit Configurations..."
  • 在弹出的窗口里,找到你正在用的Python配置,切换到"Execution"标签
  • 勾选**"Emulate terminal in output console"**,然后点"Apply"保存
  • 重新打开Python控制台,说不定就能正常获取尺寸了(这个主要是让控制台支持终端颜色等特性,对尺寸获取的支持要看版本)

内容的提问来源于stack exchange,提问作者James Schinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:28:38