我有一串在python shell中以金字塔形式显示的单词,但是当我尝试将它们移动到.txt文件时我遇到了问题。
问题是程序获取每个字符并将它们写入新文件中,但它只在第一行写入,只是用新文件替换上一行,最后文件只包含最后一行线。
我尝试将+'\n'
添加到write函数中,但结果是金字塔失去了对齐。
如果可以在文本文件中选择第一行,第二行等,并写入它们作为解决方案,但我找不到像这样的解决方案。
代码的一部分如下所示:
def pyramid(text):
for i in text:
line = string.center(i)
afile = open("name.txt", "w")
for row in text:
afile.write(row)
输入“text”是一个带有单词的嵌套列表。
答案 0 :(得分:3)
如果我确切地知道问题是什么(某些代码会有所帮助),那么回答会更容易,但看起来你在写文件时就会删除代码。查看open()函数的代码和不同参数,看看是否可能出现这种情况:
python open built-in function: difference between modes a, a+, w, w+, and r+?
答案 1 :(得分:3)
使用afile = open("name.txt", "a")
这将以附加模式打开它;写入模式会覆盖文件的内容。
答案 2 :(得分:3)
问题是你在每次迭代时都是以写入模式打开文件,因此每次首先截断文件然后再编写新行。
在循环外打开文件。
In [18]: text=['words words','words words words','words words words words']
def pyramid(text):
with open("abc","w") as f:
max_width=len(text[-1])
for line in text:
f.write("{0:^{1}s}\n".format(line,max_width)) #use string formatting
....:
In [20]: pyramid(text)
In [21]: print open("abc").read()
words words
words words words
words words words words
^:强制字段在可用空间内居中。
答案 3 :(得分:2)
使用a
选项打开文件,该文件以追加模式打开。在追加模式中,每次写入某些内容时,它都会将其追加到最后,而不是覆盖。请注意,每次运行此程序时,它始终从底部开始。您必须在重新开始之前每次都清除该文件。