【发布时间】:2014-08-16 05:21:36
【问题描述】:
我有一个文件(我们称之为 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 行存储在内存中而不会使它们失真?
谢谢
【问题讨论】:
-
只需
.read将整个文件作为字符串保存在内存中。 -
或者,如果您想更改它们的顺序,请将它们存储在列表中。每行作为列表的不同项目。
-
问题是我想要的五行在那个文件(file_A)的中间,所以我不想一遍又一遍地阅读找到那5行。
-
然后
.readlines得到一个列表并从中切出你想要的行lines = lines[x:x+5] -
@jonrsharpe 或使用
list(islice(fileobj, start, start+5))(如果从 1 开始计数,请记住从头开始取 1)