将所选文本从一个文件插入多个文件-python

时间:2014-08-15 21:00:43

标签: python file

我有文件(让我们称之为file_A),我从中提取5行(如此)

 pppppppp
 qqqqqqqq
 rrrrrrrr
 ssssssss
 tttttttt

现在我想在其他10个文件的开头插入这五行(让我们称之为1..10)。

我想打开file_A(一行有5行),然后逐个打开10个文件,并在这些文件的开头插入这些行。

现在我执行以下操作:

1)打开file_A,提取五行中的第一行(pppppppp)写入新文件
2)然后是第二行......所以一个 3)打开文件1并复制所有行,然后写出到步骤1中打开的新文件 4)关闭所有文件......重复

所以我最终得到了10个新文件,而我宁愿将提取的5行存储到现有文件中,也避免打开和关闭file_A 10次!

在不扭曲的情况下,我可以用什么工具将5行存储在内存中?

谢谢

2 个答案:

答案 0 :(得分:0)

将文件放入列表中,并遍历列表:

    file_list = ["foo.txt","bar.txt"...]
    with open("file_A.txt","r+") as f: # open once
        # extract lines
        extracted = [] # put data here
        for f in file_list:
            with open(f, "r+") as out:
                lines = out.readlines()
                lines[0:0] = extracted # add data at start 
                out.seek(0)
                out.write("".join(lines)) # write new data

答案 1 :(得分:0)

我不确定您是否需要重新编写数据,但如果没有,您可以使用(未​​经测试):

from itertools import islice, chain

with open('filea.txt') as fin:
    first5 = list(islice(fin, 5)) # or whatever criteria to get the 5

for filename in ['file1.txt', 'file2.txt', 'file3.txt']: #etc
    with open(filename) as fin, open(filename + '.out') as fout:
        fout.writelines(chain(first5, fin))