【发布时间】:2013-05-26 20:33:00
【问题描述】:
我正在尝试在文本文件中非常特定的位置插入文本。此文本文件可能相当大(>> 10 GB)
我目前使用的阅读方法:
with open("my_text_file.txt") as f:
while True:
result = f.read(set_number_of_bytes)
x = process_result(result)
if x:
replace_some_characters_that_i_just_read_and write_it_back_to_same_file
但是,我不确定如何实现
replace_some_characters_that_i_just_read_and write_it_back_to_same_file
是否有一些方法可以用来确定我在当前文件中读取的位置,我可以用来写入文件。
性能方面,如果我要使用上述方法在特定位置写入原始文件,在写入之前必须找到写入位置会不会存在效率问题?
或者您会建议创建一个完全不同的文件并在上面的每个循环中附加到该文件。那么这个操作完成后删除原文件呢?假设空间不是一个大问题,但性能是。
【问题讨论】:
-
您替换的文本长度是否与原始文本完全相同?如果没有,那么您别无选择,需要创建一个新文件。
-
并非所有文本都与原始文本相同。每次写入(循环的每次迭代)时,fileinput 模块是否在内部创建一个新文件? (如下所述)
-
@user1431282:在我的回答中展开;该文件被移到一边,然后您编写一个完整的新文件,并根据需要更改原始数据。
标签: python