Python-写入文件


要将数据写入Python中的文件,您需要打开一个文件。任何与输入和输出流交互的对象都称为文件对象。Python 的内置函数 open() 返回一个文件对象。

fileObject = open(file_name [, access_mode][, buffering])

使用 open() 函数获取文件对象后,可以使用 write() 方法将任何字符串写入文件对象表示的文件中。需要注意的是,Python 字符串可以包含二进制数据而不仅仅是文本。

write() 方法不会在字符串末尾添加换行符 ('\n')。

句法

fileObject.write(string)

这里,传递的参数是要写入打开的文件的内容。

例子

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opened file
fo.close()

上面的方法将创建 foo.txt 文件,并在该文件中写入给定的内容,最后关闭该文件。该程序没有显示任何输出,尽管如果您使用任何文本编辑器应用程序(例如记事本)打开此文件,它将具有以下内容 -

Python is a great language.
Yeah its great!!

以二进制模式写入

默认情况下,对文件对象的读/写操作是对文本字符串数据执行的。如果我们想处理不同其他类型的文件,例如媒体(mp3)、可执行文件(exe)、图片(jpg)等,我们需要在读/写模式下添加“b”前缀。

以下语句将字符串转换为字节并写入文件。

f=open('test.bin', 'wb')
data=b"Hello World"
f.write(data)
f.close()

也可以使用encode() 函数将文本字符串转换为字节。

data="Hello World".encode('utf-8')

附加到文件

当以“w”模式打开任何现有文件以存储附加文本时,其早期内容将被删除。每当以写权限打开文件时,都会将其视为新文件。要将数据添加到现有文件,请使用“a”作为附加模式。

句法

fileobject = open(file_name,"a")

例子

# Open a file in append mode
fo = open("foo.txt", "a")
text = "TutorialsPoint has a fabulous Python tutorial"
fo.write(text)

# Close opened file
fo.close()

执行上述程序时,不会显示任何输出,但会在 foo.txt 中附加一个新行。要验证,请使用文本编辑器打开。

Python is a great language.
Yeah its great!!
TutorialsPoint has a fabulous Python tutorial

使用 w+ 模式

当打开文件进行写入(使用“w”或“a”)时,无法在文件中任何较早的字节位置执行写入操作。“w+”模式允许使用 write() 和 read() 方法而无需关闭文件。File 对象支持seek() 函数将流倒回到任何所需的字节位置。

以下是seek()方法的语法 -

fileObject.seek(offset[, whence])

参数

  • offset - 这是文件中读/写指针的位置。

  • whence - 这是可选的,默认为 0 表示绝对文件定位,其他值为 1 表示相对于当前位置查找,2 表示相对于文件末尾查找。

让我们使用seek() 方法来展示如何对文件进行同时读/写操作。

例子

以下程序以 w+ 模式(读写模式)打开文件,添加一些数据。它在文件中寻找某个位置并用新文本覆盖其较早的内容。

# Open a file in read-write mode
fo=open("foo.txt","w+")
fo.write("This is a rat race")
fo.seek(10,0)
data=fo.read(3)
fo.seek(10,0)
fo.write('cat')
fo.close()

输出

如果我们在读取模式下打开文件(或在 w+ 模式下寻找起始位置),并读取内容,它会显示 -

This is a cat race