将一个文件中选定的文本插入多个文件

2024-04-25 09:03:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件(我们称之为文件A),从中我提取了5行(像这样)

 pppppppp
 qqqqqqqq
 rrrrrrrr
 ssssssss
 tttttttt

现在我想在其他10个文件的开头插入这五行(我们称它们为1..10)。你知道吗

我想打开一个文件(一个有5行),然后一个接一个地打开10个文件,并在这些文件的开头插入这些行。你知道吗

现在我要做的是:

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

因此,我最终得到10个新文件,而我宁愿将提取的5行存储到现有文件中,也避免打开和关闭文件\u 10次!你知道吗

我可以使用什么工具来存储内存中的5行,而不扭曲他们呢?你知道吗

谢谢


Tags: 文件工具内存步骤ppppssssssssttttttttpppppppp
2条回答

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

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))

将文件放入列表中,然后在列表上迭代:

    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

相关问题 更多 >