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()方法。文件对象支持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