你如何追加到一个文件?

你如何附加到文件而不是覆盖它? 是否有附加到文件的特殊function?

with open("test.txt", "a") as myfile: myfile.write("appended text") 

您需要通过设置“a”或“ab”作为模式以附加模式打开文件。 看open()

当以“a”模式打开时,写入位置将始终位于文件的末尾(追加)。 你可以打开“a +”来允许阅读,向后寻找和阅读(但所有的写入仍然在文件的末尾!)。

例:

 >>> with open('test1','wb') as f: f.write('test') >>> with open('test1','ab') as f: f.write('koko') >>> with open('test1','rb') as f: f.read() 'testkoko' 

注意 :使用'a'和使用'w'打开并寻找文件末尾是不一样的 – 考虑如果另一个程序打开文件并开始在seek和write之间写入,会发生什么情况。 在某些操作系统上,使用'a'打开文件可以保证所有后续写入操作都会以primefaces方式附加到文件末尾(即使文件由其他写入增长)。


有关“a”模式如何运行的更多细节( 仅在Linux上进行testing )。 即使你追求,每一个写都会追加到文件的末尾:

 >>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session >>> f.write('hi') >>> f.seek(0) >>> f.read() 'hi' >>> f.seek(0) >>> f.write('bye') # Will still append despite the seek(0)! >>> f.seek(0) >>> f.read() 'hibye' 

事实上, fopen指出:

以追加模式(a作为模式的第一个字符)打开文件会导致对该stream的所有后续写入操作发生在文件结束处,就像在调用之前一样:

 fseek(stream, 0, SEEK_END); 

旧的简化的答案(不使用):

例如:( 在一个真正的程序中用来closures文件 – 请参阅文档

 >>> open("test","wb").write("test") >>> open("test","a+b").write("koko") >>> open("test","rb").read() 'testkoko' 

您可能想要传递"a"作为模式参数。 查看open()的文档。

 with open("foo", "a") as f: f.write("cool beans...") 

模式参数还有更新(+),截断(w)和二进制(b)模式的其他排列,但是以"a"开头是最好的select。

我总是这样做,

 f = open('filename.txt', 'a') f.write("stuff") f.close() 

这很简单,但非常有用。

当我们使用这行open(filename, "a")a表示附加文件,这意味着允许插入额外的数据到现有的文件。

您可以使用下面的这些行来追加文件中的文字

 def FileSave(filename,content): with open(filename, "a") as myfile: myfile.write(content) FileSave("test.txt","test1 \n") FileSave("test.txt","test2 \n") 

Python有三种模式,主要有三种模式:write(w),read(r)和append(a)。

所以追加到一个文件就像:

 f = open('filename.txt', 'a') f.write('whatever you want to write here (in append mode) here.') 

然后有一些模式,使您的代码更less的行:读+写(r +),写+读(w +),追加+读(a +)。 最后,还有读取(rb),写入(wb),附加(ab),读写(rb +),写入和读取(wb +),附加和读取(ab +)等二进制格式的读/写模式。

这里是我的脚本,它基本上统计行数,然后追加,然后再计数,所以你有证据表明它的工作。

 shortPath = "../file_to_be_appended" short = open(shortPath, 'r') ## this counts how many line are originally in the file: long_path = "../file_to_be_appended_to" long = open(long_path, 'r') for i,l in enumerate(long): pass print "%s has %i lines initially" %(long_path,i) long.close() long = open(long_path, 'a') ## now open long file to append l = True ## will be a line c = 0 ## count the number of lines you write while l: try: l = short.next() ## when you run out of lines, this breaks and the except statement is run c += 1 long.write(l) except: l = None long.close() print "Done!, wrote %s lines" %c ## finally, count how many lines are left. long = open(long_path, 'r') for i,l in enumerate(long): pass print "%s has %i lines after appending new lines" %(long_path, i) long.close() 

假设你有一个文件biki.txt ,其中包含:

 http://www.youtube.com/watch?v=6INqTUEnitkhttp://www.youtube.com/watch?v=6M6GT5xJhHohttp://www.youtube.com/watch?v=6q1SuHTqY0Ahttp://www.youtube.com/watch?v=6w2kORM6gvQ 

比方说,你需要换行格式,并保存到另一个文件,如new.txt

 http://www.youtube.com/watch?v=6INqTUEnitk http://www.youtube.com/watch?v=6M6GT5xJhHo http://www.youtube.com/watch?v=6q1SuHTqY0A http://www.youtube.com/watch?v=6w2kORM6gvQ 

这里是如何做到这一点:

 #!/usr/bin/env python import re import os import sys ### Coding to arrange matching in new line with open("biki.txt","r") as myfile: mydata = myfile.read() data = mydata.replace("http","%http") for m in range(1,1000): ## For loop is use here dat1 = data.split('%')[m] ## Contain of split file f = open("new.txt","a") ## file open in appending mode ie 'a' f.write(dat1) ## writing the contain dat1 to new.txt f.close() ## File closing after writing.