如何以向后的方式遍历python和c ++中的文件?并且还以向后(从下到上)的方式存储数据?

时间:2010-05-04 10:51:45

标签: c++ python

假设我想在python和C ++中的文件中存储3行。 我想像这样存储它

aaa
bbb 
ccc ..

但我首先提供ccc输入,然后bbb然后aaa。如何从底部到顶部遍历文件并从底部到顶部存储/?

3 个答案:

答案 0 :(得分:3)

从标题和问题来看,您是否要存储到文件,从文件加载或两者都不明显,因此我将涵盖这两种情况:

如果可以将其全部加载到内存中(在Python中):

list(reversed(list(open('foo.txt'))))

否则,它会变得更加困难。向后处理文件需要您从结束时间读取数据块,向后扫描每个块以获取换行标记,并在块边界处将事物拼接在一起。

编写

如果数据一次全部适合内存,请将数字放入一个列表中(在Python中):

open('foo.txt', 'w').writelines(reversed(data))

如果data是可迭代的,请将其替换为list(data)

如果数据不适合内存(例如,你有一些发射器吐出大量数据),问题会更加困难。想到的最简单的解决方案是将数据推送到sqlite数据库,然后将其复制到文件中。或者您可能会发现直接从sqlite使用数据更容易。

答案 1 :(得分:1)

您可能想要使用collections.deque。 Afaik这些内容经过优化,可以插入其中一个端点,因此您可以按原样读取文件,并使用deque方法将行填充到appendleft对象中......只是一个想法。不知道会有多高效。 :)

答案 2 :(得分:0)

每次在线性结构(listvector<string>)的开头插入要生成的线,然后从头到尾迭代结构。