如何避免在Python中覆盖文件?

2 投票
2 回答
7112 浏览
提问于 2025-04-18 11:40

我正在尝试写一个程序,这个程序可以把用户输入的内容保存到一个文本文件里,使用的是Python 2.7。不过我遇到了一个问题,就是每次重新运行程序的时候,文本文件里的内容会被覆盖,之前的数据就没了。所以我想知道怎么才能避免这个问题。如果这个问题已经有人回答过了,请给我链接到那个文章。非常感谢!

import time
import sys as LOL
print 'Welcome to the database, enter -1 to exit.'
time.sleep(1)
files = open('c:/writing.txt','w')
name = raw_input('Enter in your name... ')
if name == '-1':
    LOL.exit()
time.sleep(1)
if len(name)> 64 or len(name)< 1:
    print 'Please enter a name that is between 1 and 64 characters!!'
while len(name)>64 or len(name)<1:
    name = raw_input('Enter in your name... ')
    if name == '-1':
        LOL.exit()
    if len(name)> 64 or len(name)<1:
        print 'Please enter a name that is between 1 and 64 characters!!'
        time.sleep(1)
time.sleep(1)
age = int(raw_input('Enter in your age... '))
if age == -1:
    LOL.exit()
while age > 125 or age < 1:
    age = int(raw_input('Enter in your age... '))
    if name == '-1':
        LOL.exit()
    time.sleep(1)
    if age > 125 or age < 1:
        print 'Enter in a vaild age!'
newedit = name + ' is %s years old.' %age
files.write(newedit)
files.close()

2 个回答

4

要想在文件中添加内容,而不是覆盖原来的内容,你应该使用追加模式,而不是写入模式。你可以用这一行代码来实现:f = open("text.txt", 'a')

6

这是因为你以 w 模式(写入模式)打开了文件。正如你在文档中可以看到的,这样做会自动清空文件的内容:

最常用的模式值是 'r' 用于读取,'w' 用于写入(如果文件已经存在,会清空文件),还有 'a' 用于追加(在某些Unix系统上,这意味着所有写入都会追加到文件的末尾,而不管当前的位置)。

正如上面的摘录所说,如果你想在不清空文件的情况下向文件追加文本,应该使用 a 模式:

files = open('c:/writing.txt','a')

撰写回答