我正在尝试在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对其开始的列没有影响。
是否有解决此问题的方法?谢谢。
lines.append()
时,您要获取f.readlines()
返回的整个列表,并将其作为单个项添加到lines
。然后,for 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())