选择要写入的.txt文件中的行数

时间:2013-04-14 20:10:12

标签: python file-io

我有一串在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”是一个带有单词的嵌套列表。

4 个答案:

答案 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

String formatting

  

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

答案 3 :(得分:2)

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