我正在学习PyGTK,我正在制作一个文本编辑器(这似乎是pygtk的hello世界:))无论如何,我有一个"保存"功能,将TextBuffer写入文件.看起来像
try:
f = open(self.working_file_path, "rw+")
buff = self._get_buffer()
f.write(self._get_text())
#update modified flag
buff.set_modified(False)
f.close()
except IOError as e:
print "File Doesnt Exist so bring up Save As..."
......
Run Code Online (Sandbox Code Playgroud)
基本上,如果文件存在,请将缓冲区写入其中,如果没有调出另存为对话框.
我的问题是:"更新"文件的最佳方法是什么.我似乎只能附加到文件的末尾.我尝试过各种文件模式,但我确定我错过了一些东西.
提前致谢!
您可以在"r+"模式下打开文件,这样您就可以读取和写入文件,并查找特定位置并在那里写入.这可能不会帮助你做我认为你想要的事情; 听起来你只想写出改变后的数据?
请记住,在磁盘上,文件不是作为一系列可扩展的行存储的,它只是一个字节序列; 其中一些字节表示行结尾,但下一行会立即跟进.因此,如果您编辑文件中的第一行并编写新的第一行,除非新的行恰好与旧行完全相同,否则第二行现在将不在正确的位置,因此您'我需要移动它(如果您写出的新行长于原始行,则首先复制它).现在这意味着下一行也不在正确的位置......依此类推,直到您必须读入并写出文件的其余部分.
在实践中,除非您可以简单地附加更多数据,否则几乎不会只写入现有文件的一部分; 如果你需要"改变"你读入的文件,在内存中更改它,然后将其写回或者你在文件中逐段读取(通常是逐行),然后在你去的时候写出一个新文件(然后可能将新文件移到原始文件的顶部).第一种方法最简单,第二种方法更好,不必立即将整个内容保存在内存中.
| 归档时间: |
|
| 查看次数: |
3623 次 |
| 最近记录: |