Python:使用curses库打印ASCII文本文件

2024-09-28 17:29:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印一个包含python中ASCII艺术的文本文件

我意识到最简单的方法就是这样做

with open(image, 'r') as f:
for line in f:
    print(line.rstrip())

但是我想使用curses库打印它,这样我就可以在显示图像的同时显示其他文本。这是我到目前为止的想法

lines=[]
with open('image.txt',"r",encoding="utf8") as f:
        lines.append(f.readlines())

for a in lines:
    char = str(("".join(a)))
    stdscr.addstr(y, x, char)

这段代码完成了90%的工作,但我无法使图像向右移动。我可以通过更改stdscr.addstr(y,x,char)中的y来选择图像从哪一行开始,但是更改x对图像从哪一列开始没有影响

有办法解决这个问题吗? 谢谢


Tags: in图像imageforaswithlineascii
1条回答
网友
1楼 · 发布于 2024-09-28 17:29:46

调用lines.append()时,您将获取f.readlines()返回的整个列表,并将其作为单个项添加到linesfor a in lines则只循环一次,将a(整个文件)的元素重新连接在一起,并将其传递给addstr(),后者解释嵌入的换行符,将第一列之后的每一行重置为第一列

您不是想要lines.append(),而是想要lines.extend(),或者更可能是想要lines = f.readlines()。然后,您可以省去连接,尽管您可能应该去掉换行符。例如:

with open('image.txt',"r",encoding="utf8") as f:
    lines = f.readlines()

for a in lines:
    # set x and y here
    stdscr.addstr(y, x, a.rstrip())

相关问题 更多 >