假设我想在python和C ++中的文件中存储3行。 我想像这样存储它
aaa
bbb
ccc ..
但我首先提供ccc
输入,然后bbb
然后aaa
。如何从底部到顶部遍历文件并从底部到顶部存储/?
答案 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)
每次在线性结构(list
,vector<string>
)的开头插入要生成的线,然后从头到尾迭代结构。