我有文件(让我们称之为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行存储在内存中?
谢谢
答案 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))