如何在Python中将字符串数据添加到文本文件顶部?
我在程序的底部写了一段小代码,目的是在我的文本文件开头添加一个文本标题。但是,数据却写到了文件的底部。我在《Learn Python The Hard Way》这本书中看到,使用 .seek(0) 可以把插入点放到文件的开头,也就是0字节的位置。不过,我觉得我可能没有正确地使用这个功能。
print 'Now, I will write a header to the original file to display copyright.'
append_copy = open(filename, "a+")
append_copy.seek(0)
append_copy.write("Copyright -- Ryan -- 2014\n")
append_copy.close()
print 'File closed and data written!'
2 个回答
2
你现在做的事情是行不通的,而且你想要的效果也无法实现。
以追加模式打开文件意味着写入的内容总是会加在文件的最后面。这就是“追加”的意思,所以这应该不会让你感到意外。
但是没有任何文件系统允许你在任意位置插入字节。你需要创建一个新文件,把想要的内容写进去,然后把旧文件的内容复制过来,接着删除或重命名旧文件,最后再把新文件重命名。
2
之前的回答是对的,确实不能直接做到这一点,但你不需要创建一个临时文件来实现你的目标。
你可以用Python直接覆盖文件,只要你用 w
这个标志打开它,这样就不需要创建临时文件,前提是你的原始文件足够小,可以在内存中处理。
filename = "Foo.txt";
print 'Now, I will write a header to the original file to display copyright.'
append_copy = open(filename, "r")
original_text = append_copy.read()
append_copy.close()
append_copy = open(filename, "w")
append_copy.write("Copyright -- Ryan -- 2014\n")
append_copy.write(original_text)
append_copy.close()
print 'File closed and data written!'
关于覆盖文件的具体说明可以在 这里 找到。
'w' 代表只写(如果有同名的文件,会被删除)