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

时间:2014-07-01 02:31:18

标签: python python-2.7

我正在尝试创建一个程序,该程序将获取用户输入的内容并将其放入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 个答案:

答案 0 :(得分:6)

这是因为您以w模式(写入模式)打开了文件。正如您在docs中所读到的那样,这样做会自动截断它:

  

最常用的模式值是'r'用于阅读,'w'用于   写(截断文件,如果它已经存在),并'a'为   追加(在某些Unix系统上意味着所有写入附加到   文件的结尾,无论当前的搜索位置如何。)

如上面的摘录所示,您应该使用a模式将文本附加到文件而不会截断:

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

答案 1 :(得分:4)

追加&#39; a&#39;而不是写&#39; w&#39;模式应该可以这样做,所以你使用该行 f = open("text.txt", 'a')