Python 诅咒在 cmd 或 powershell 中无法正常工作

问题描述 投票:0回答:1

我正在尝试使用curses显示大的ascii文本,但由于某种原因它只能在Visual Studio Code终端中工作。

Visual Studio Code 终端正确显示文本

但是当我尝试在 powershell 中运行该程序时,它会由于某种原因切断文本的开头,而当我在 cmd 中运行它时,它只显示一个方形的问号。

windows powershell 终端开头的字母被截断,替换为空格,cmd 终端只显示一框问号

发生了什么事以及如何解决它?

main.py:

import os, curses, time
os.system('cls' if os.name == 'nt' else 'clear')

def main(stdscr):
    stdscr.clear()
    HEIGHT = curses.LINES
    WIDTH = curses.COLS

    logo = []
    with open("logo.txt", mode="r", encoding="utf-8") as dataFile:
        logo = dataFile.readlines()
    
    for i in range(len(logo)):
        stdscr.addstr(logo[i])

    stdscr.refresh()
    stdscr.getkey()


curses.wrapper(main)

徽标.txt:

                       #                              
                  #   ##                              
  #  ##########   ##  #########     #####       ####  
   # #  # ## ##    #  #            ##   ##     #   ## 
     #  # ##         #            ##     ##   ##      
       ## ##  #  #  ##########   ##       #   ##      
 ##   ##   ####  ##   #  #   #   ##       ##  ###     
   # ##  #         #  #  #   #   ##       ##   ####   
         #          ###########  ##       ##     #### 
     ##########    #  #  #  ##   ##       ##       ## 
   #     ##        #  #  #  ##   ##       #         ##
   #    ####      ## ##  #  ##    ##     ##         ##
  ##   # #  #     #  ##########    ##   ##    ##   ## 
 ##  ##  #   ##  ##  #      #       #####      #####  
 #   #   #       #       ####                         

我尝试通过 addstr-inging 不同变体的“A”和“AAAAAAAAAAAAAAAAAAAAA”而不是 ascii 字体进行调试,效果正常。

我还尝试将文本更改为更小,以防文本循环或在 powershell 终端中出现某些问题,但同样的问题仍然存在。

最后,出于同样的原因,我尝试删除第一个字符。截止点似乎是屏幕上的同一个位置,文本较少意味着可以看到黑色区域的文本较少。

python python-curses
1个回答
0
投票

绕过该问题的一种方法是转换通常可打印的文本信息字符:这相当简单,因为 UTF-8 在前 256 个代码点中包含大部分 ISO-8859-1 字符。

$ sed < logo.txt -re 's/\xe3\x80\x80/./g' -e 's/\xef\xbc\x83/#/g' ; echo 
.......................#..............................
..................#...##..............................
..#..##########...##..#########.....#####.......####..
...#.#..#.##.##....#..#............##...##.....#...##.
.....#..#.##.........#............##.....##...##......
.......##.##..#..#..##########...##.......#...##......
.##...##...####..##...#..#...#...##.......##..###.....
...#.##..#.........#..#..#...#...##.......##...####...
.........#..........###########..##.......##.....####.
.....##########....#..#..#..##...##.......##.......##.
...#.....##........#..#..#..##...##.......#.........##
...#....####......##.##..#..##....##.....##.........##
..##...#.#..#.....#..##########....##...##....##...##.
.##..##..#...##..##..#......#.......#####......#####..
.#...#...#.......#.......####.........................
© www.soinside.com 2019 - 2024. All rights reserved.