如何避免在Python中覆盖文件?
我正在尝试写一个程序,这个程序可以把用户输入的内容保存到一个文本文件里,使用的是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')