📜  python中w+和r+的区别(1)

📅  最后修改于: 2023-12-03 15:34:21.592000             🧑  作者: Mango

Python中w+和r+的区别

在Python中,文件的读写是常见的操作之一。w+r+是两个常用的文件打开模式,不同的模式有不同的作用和使用场景。

w+模式

w+模式是可写可读模式,表示可读写打开文件。如果文件不存在,则会创建一个新的文件。如果文件已经存在,则会将文件清空,并在文件开头写入所需的内容。如果想要在文件中追加内容,则需要使用a模式。

举个例子,假设当前目录下不存在test.txt文件,那么使用w+模式打开该文件后,可以向其中写入数据,也可以从其中读取数据。

with open('test.txt', 'w+') as f:
    f.write('Hello, world!')
    f.seek(0)  # 将文件指针移动到文件开头
    print(f.read())  # 输出:Hello, world!

在上面的代码中,f.seek(0)表示将文件指针移动到文件开头,这样才能从文件中读取数据。f.read()表示读取文件的全部内容,并将其打印出来。由于使用w+模式打开文件会清空文件,所以我们需要先将数据写入文件,然后再读取出来进行验证。

r+模式

r+模式也是可读可写模式,表示可读写打开文件。但与w+不同的是,如果文件不存在,r+模式会抛出FileNotFoundError异常。

当文件存在时,r+模式会将文件指针置于文件开头。这意味着,如果需要在文件中追加内容,需要先将文件指针移动到文件末尾。另外,如果使用r+模式进行写入文件操作,会覆盖掉原有的内容。

下面是使用r+模式进行文件读写的示例代码:

with open('test.txt', 'r+') as f:
    print(f.read())  # 输出:Hello, world!
    f.write('\nThis is a new line.')
    f.seek(0)
    print(f.read())  # 输出:Hello, world!
                     # This is a new line.

在上述代码中,我们首先使用f.read()方法读取文件的全部内容,并将其打印出来。然后,我们使用f.write()方法向文件中写入一条新的记录,并使用f.seek(0)方法将文件指针重新置于文件开头。最后,我们再次使用f.read()方法读取文件的全部内容,并将其打印出来。可以看到,新的记录已经被追加到文件的末尾。

总结

在Python中,w+r+是两种常用的文件打开模式。w+模式表示可写可读模式,可以向文件中写入内容,并从文件中读取内容。如果文件不存在,则会创建一个新的文件。如果文件已经存在,则会清空文件并在文件开头写入所需的内容。r+模式也表示可读可写模式,但与w+不同的是,如果文件不存在,r+模式会抛出FileNotFoundError异常。此外,r+模式会将文件指针置于文件开头,如果需要在文件中追加内容,需要先将文件指针移动到文件末尾。如果使用r+模式进行写入操作,则会覆盖掉原有的内容。