你如何追加到该文件,而不是覆盖呢?是否有追加到文件中的特殊功能?
with open("test.txt", "a") as myfile:
myfile.write("appended text")
这里是我的脚本,它基本上是计数的行数,然后追加,然后再计算他们,你有证据,它的工作。
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()
您需要打开追加模式的文件,通过设置“一”或“AB”的模式。见open()。
当你与“一”模式打开,写入位置总是会在文件(追加)结束。你可以用“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”,并定位到文件的末端开口 - 考虑,如果另一程序中打开该文件,并开始之间寻求和写书写可能会发生什么。在某些操作系统上,打开与“A”担保文件,你的所有的写操作之后将原子附加到文件(即使该文件的增长被其他写入时)结束。
有关如何在“一”模式操作的一些细节(只在Linux上测试)。即使你要回去,每次写入将追加到文件的末尾:
>>> 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
manpage指出:
打开一个文件中附加模式(一个作为模式的第一个字符)导致所有随后的写入操作此流,发生在结束文件如果前面的呼叫为:
fseek(stream, 0, SEEK_END);
with
):例如:(在实际的程序中使用with
关闭文件 - 见the documentation)
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
我总是这样做,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
这很简单,但很实用。
你可能想通过"a"
作为mode参数。见open()的文档。
with open("foo", "a") as f:
f.write("cool beans...")
有更新(+),截断(W)和二进制(B)方式,但只有"a"
是你最好的选择开始mode参数的其他排列。
Python有断主三种模式的许多变化,这三种模式是:
'w' write text
'r' read text
'a' append text
因此,要附加到文件是一样简单:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
再就是,只是让你的代码更少的模式:
'r+' read + write text
'w+' read + write text
'a+' append + read text
最后,还有的读/二进制格式书写模式:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
在使用我们这一行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")
您还可以在r+
模式下打开该文件,然后设置文件位置在文件的结尾。
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
打开文件中r+
模式将让你写,除了年底其他文件的位置,而a
和a+
力写入结束。
如果要附加到文件
with open("test.txt", "a") as myfile:
myfile.write("append me")
我们声明的变量myfile
打开一个名为test.txt
文件。打开需要两个参数,我们要对文件做,我们要打开该文件,并表示该种许可或操作的字符串
这里是文件模式选项
Mode Description 'r' This is the default mode. It Opens file for reading. 'w' This Mode Opens file for writing. If file does not exist, it creates a new file. If file exists it truncates the file. 'x' Creates a new file. If file already exists, the operation fails. 'a' Open file in append mode. If file does not exist, it creates a new file. 't' This is the default mode. It opens in text mode. 'b' This opens in binary mode. '+' This will open a file for reading and writing (updating)
该'a'
参数表示追加模式。如果你不希望使用with open
每一次,你可以很容易地编写一个函数来为你做它:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
如果你想写比其他结束之外的其他地方,你可以使用'r+'
†:
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
最后,'w+'
参数补助金甚至更多的自由。具体来说,它允许你创建的文件,如果它不存在,以及空,目前存在的文件的内容。