1

我有一串单词在 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)

输入“文本”是一个包含单词的嵌套列表。

4

4 回答 4

3

如果我确切地知道问题出在哪里(一些代码会有所帮助),那么回答起来会更容易,但看起来你在写入文件时正在擦除代码。查看您的代码和 open() 函数的不同参数,看看是否可能是这种情况:

python打开内置函数:模式a、a+、w、w+、r+的区别?

于 2013-04-14T20:22:04.543 回答
3

使用afile = open("name.txt", "a")That 将以附加模式打开它;写入模式会覆盖文件的内容。

于 2013-04-14T20:31:12.943 回答
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

字符串格式

^ :强制字段在可用空间内居中。

于 2013-04-14T20:36:37.507 回答
2

使用a选项打开文件,它以附加模式打开它。在追加模式下,每次写入内容时,都会将其追加到末尾,而不是覆盖。请注意,每次运行此程序时,它总是从底部开始。每次重新开始之前,您都必须清除文件。

于 2013-04-14T20:33:49.687 回答