0

我有一个包含 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,这似乎是一个简单的问题。任何帮助,将不胜感激。

4

3 回答 3

0

通常,您不能修改文件,除非在文件末尾(最后一行之后)附加内容。

在您的情况下,您希望:

  1. 逐行读取文件
  2. 在行中附加一些东西(可选)
  3. 把那行写回去。

您可以通过多种方式做到这一点。加载 -> 写回修改后的字符串将是最简单的:

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 文档绝对是发现新特性和模式的好读物。

于 2013-10-16T13:23:29.617 回答
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            
于 2013-10-16T13:19:37.737 回答
0

像这样的东西:

for line in file.readlines():
    print line.rstrip(), cycle.pop(0) 
于 2013-10-16T13:19:14.010 回答