如何在Python中将字符串数据添加到文本文件顶部?

1 投票
2 回答
3879 浏览
提问于 2025-04-18 04:25

我在程序的底部写了一段小代码,目的是在我的文本文件开头添加一个文本标题。但是,数据却写到了文件的底部。我在《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' 代表只写(如果有同名的文件,会被删除)

撰写回答