使用python将列表中的数字添加到现有文件中

时间:2013-10-16 13:13:14

标签: python

我有一个14行的文本文件,我想从列表中添加列表项到每行的末尾,从第5行开始。请有人帮帮我。 例如 我有一个名为test.txt的文本文件:

a b
12
1
four
/users/path/apple 
/users/path/banana 
..
..

我有以下列表

周期= [21,22,23,...]

我的问题是如何将这些列表项添加到行的末尾,以便我得到:

a b
12
1
four
/users/path/apple 21
/users/path/banana 22
..
..

我不擅长python,这似乎是一个简单的问题。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

这样的事情:

for line in file.readlines():
    print line.rstrip(), cycle.pop(0) 

答案 1 :(得分:0)

cycle = [21, 22, 23]
i = 0
with open('myfile.txt', 'r') as fh:
    with open('new_myfile.txt', 'w' as fh_new:
        for line in fh:
            addon = ''
            if i < len(cycle):
                addon = cycle[i]
            fh_new.write(line.strip() + addon + '\n')
            i += 1            

答案 2 :(得分:0)

通常,除了在文件末尾附加内容(在最后一行之后)之外,您无法修改文件。

在您的情况下,您想要:

  1. 逐行阅读文件
  2. 在行上添加内容(可选)
  3. 写回那条线。
  4. 您可以通过多种方式完成此操作。加载 - &gt;写回修改的字符串将是最简单的:

    with open("path/to/my/file/test.txt", 'rb') as f:
        # Strip will remove the newlines, spaces, etc...
        lines = [line.strip() for line in f.readlines()]
    numbers = [21, 22, 23]
    itr = iter(numbers)
    with open("path/to/my/file/test.txt", 'wb') as f:
        for line in lines:
            if '/' in line:
                f.write('%s %s\n' % (line, itr.next()))
            else:
                f.write('%s\n' % line)
    

    此方法的问题在于,如果您在处理时出错,则会破坏原始文件。其他方法是:

    • 对行列表进行所有修改,检查并回写整个列表
    • 写回新创建的文件,最后可能重命名。

    与往常一样,Python doc对于发现新功能和模式绝对是一个很好的阅读。