簡體   English   中英

ValueError:錯誤的文件描述符,寬度 = os.get_terminal_size().columns

[英]ValueError: bad file descriptor, width = os.get_terminal_size().columns

我收到此錯誤:

Traceback (most recent call last):
  File "C:\Users\myname\OneDrive\Desktop\DxubleG's follwo bot\bot.py", line 10, in <module>
    width = os.get_terminal_size().columns
ValueError: bad file descriptor

代碼部分是:

from colorama import init, Fore, Style
from discord.ext import commands
import subprocess
import requests
import discord
import ctypes
import os

init(convert=True)
width = os.get_terminal_size().columns
ctypes.windll.kernel32.SetConsoleTitleW('dxuble.lol')
token = 'Nzc0ODIxNjc1OTQyMjgxMjQ4.X6dW6w.sDk8D4FRFJXy06tEJCRLMqy6pFc'
prefix = '.'

title = [
    r'',
    r'',
    r'',
    r'',
    r'',
    r'',
    r''
]

intents = discord.Intents().all()
bot = commands.Bot(command_prefix=prefix, case_insensitive=True, intents=intents)
bot.remove_command('help')

有誰知道為什么?

由於以下三個原因之一,您幾乎肯定會遇到此問題:

  1. 沒有終端
  2. 使用某些 IDE 提供的“虛擬終端”,它不會將sys.stdout連接到真正的文件描述符,並且無法對os.get_terminal_size進行猴子補丁
  3. 可能在一個奇怪的系統上查詢stdout的終端大小時即使它連接到終端也不起作用

無論哪種方式,解決方案都是相同的:遵循 文檔的指導(“ shutil.get_terminal_size()是通常應該使用的高級 function, os.get_terminal_size是低級實現。”),並使用shutil.get_terminal_size() ,它總是按順序提供結果,檢查:

  1. COLUMNS / LINES的環境設置
  2. 如果它們沒有被定義,它會嘗試使用os.get_terminal_size()
  3. 如果失敗(系統不支持查詢,或者沒有連接到終端),它會提供一個回退結果,默認為(80, 24) (如果不是,您可以傳入自己的默認值tuple對你來說很好的默認值,例如cols, lines = shutil.get_terminal_size((128, 32))回退到更大的默認尺寸)

您是否在終端中運行此腳本? 我試圖運行您在我的終端中失敗的代碼並且它按預期工作。 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM