你如何追加到Python中的文件?

问题描述 投票:1354回答:9

你如何追加到该文件,而不是覆盖呢?是否有追加到文件中的特殊功能?

python file append
9个回答
2205
投票
with open("test.txt", "a") as myfile:
    myfile.write("appended text")

-6
投票

这里是我的脚本,它基本上是计数的行数,然后追加,然后再计算他们,你有证据,它的工作。

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()

183
投票

您需要打开追加模式的文件,通过设置“一”或“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);

Old simplified answer (not using with):

例如:(在实际的程序中使用with关闭文件 - 见the documentation

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

44
投票

我总是这样做,

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

这很简单,但很实用。


33
投票

你可能想通过"a"作为mode参数。见open()的文档。

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

有更新(+),截断(W)和二进制(B)方式,但只有"a"是你最好的选择开始mode参数的其他排列。


28
投票

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

12
投票

在使用我们这一行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")

2
投票

您还可以在r+模式下打开该文件,然后设置文件位置在文件的结尾。

import os

with open('text.txt', 'r+') as f:
    f.seek(0, os.SEEK_END)
    f.write("text to add")

打开文件中r+模式将让你写,除了年底其他文件的位置,而aa+力写入结束。


1
投票

如果要附加到文件

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)

1
投票

'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+'参数补助金甚至更多的自由。具体来说,它允许你创建的文件,如果它不存在,以及空,目前存在的文件的内容。


Credit for this function goes to @Primusa

© www.soinside.com 2019 - 2024. All rights reserved.