文件写入涉及到以特定模式打开文件、向其中写入数据,然后关闭文件以确保所有数据都被保存并且资源被释放。Python 提供了一个内置的 open()
函数来处理文件操作,并且有多种方法可以用来写入数据。
打开文件用于写入
打开文件用于写入是执行写入操作的第一步。open()
函数用来以不同的模式打开文件,每种模式适用于特定的情况。
open()
函数
Python 中的 open()
函数用来打开一个文件。它至少需要一个参数,即文件名,并可选第二个参数来指定打开文件的模式。
文件写入模式
以下是主要的文件写入模式:
-
w
(写入模式):以写入模式打开文件。如果文件已存在,则会清空(清空)文件后开始写入;如果文件不存在,则创建新文件。
-
a
(追加模式):数据被写入到文件末尾。如果文件不存在,则创建新文件。
-
x
(独占创建模式):以独占方式创建文件。如果文件已经存在,则操作失败。
-
b
(二进制模式):当与其他模式结合使用时,以二进制模式打开文件。
-
+
(更新模式):以更新(读取和写入)模式打开文件。
示例:以写入模式打开文件
此模式用于每次打开文件时都从头开始写入数据:
file = open("example.txt", "w")
file.write("Hello, World!")
file.close()
print("File opened successfully!!")
输出结果:
File opened successfully!!
示例:以追加模式打开文件
此模式用于在不改变现有内容的情况下向文件末尾添加数据:
file = open("example.txt", "a")
file.write("Appending this line.\n")
file.close()
print("File opened successfully!!")
输出结果:
File opened successfully!!
使用 write()
方法写入文件
write()
方法用来将单一字符串写入到文件中。这使得它可以适用于各种基于文本的文件操作。
write()
方法接受一个参数:你想要写入文件的字符串。它将字符串的确切内容写入到文件中而不添加任何额外的字符,例如换行符。
示例
下面的例子中,我们以写入模式打开 example.txt
文件,并使用 write()
方法写入字符串:
with open("example.txt", "w") as file:
file.write("Hello, World!\n")
file.write("This is a new line.\n")
print("File opened successfully!!")
输出结果:
File opened successfully!!
使用 writelines()
方法写入文件
writelines()
方法用来将字符串列表写入到文件中。列表中的每个字符串都会依次写入文件,不会自动添加任何换行字符。
示例
在此示例中,我们创建了一个包含多个字符串的列表 lines
,每个字符串以换行符结尾。然后,我们以写入模式打开一个文件 example.txt
并使用 writelines()
方法一次性写入所有字符串:
lines = ["First line\n", "Second line\n", "Third line\n"]
with open("example.txt", "w") as file:
file.writelines(lines)
print("File opened successfully!!")
输出结果:
File opened successfully!!
写入新文件
在 Python 中写入新文件涉及创建新文件(或覆盖现有文件)并将所需内容写入其中。这里我们将解释写入新文件所涉及的步骤:
-
使用
open()
函数以写入模式 ("w"
或 "wb"
对于二进制文件) 创建或打开文件。
-
使用
write()
或 writelines()
方法写入数据。
-
确保在写入之后正确关闭文件,通常使用
with
语句进行自动处理。
示例
下面的例子中,我们创建一个 foo.txt
文件,并向其中写入给定的内容,最后关闭该文件:
fo = open("foo.txt", "w")
fo.write("Python is a great language.\nYeah its great!!\n")
fo.close()
如果你用类似记事本这样的文本编辑器应用程序打开这个文件,它将包含以下内容:
Python is a great language.
Yeah its great!!
在二进制模式下写入新文件
默认情况下,对文件对象进行的读/写操作是在文本字符串数据上进行的。如果我们需要处理不同类型的文件,如媒体文件(mp3)、可执行文件(exe)或图片(jpg),则必须在读/写模式前加上 'b'
前缀以二进制模式打开文件。
写入二进制数据到文件
要将二进制数据写入文件,请以二进制写入模式 ('wb'
) 打开文件。下面的例子演示了这一点:
with open('test.bin', 'wb') as f:
data = b"Hello World"
f.write(data)
将文本字符串转换为字节
将文本字符串转换为字节可以使用 encode()
函数。当你需要将文本数据作为二进制数据写入时,这是有用的:
with open('test.bin', 'wb') as f:
data = "Hello World".encode('utf-8')
f.write(data)
向现有文件写入
当现有文件以写入模式 ('w'
) 打开时,其先前的内容会被清除。以写权限打开文件将其视为新文件。若要在不删除其内容的情况下向现有文件添加数据,则应以追加模式 ('a'
) 打开文件。
示例
下面的例子演示了如何以追加模式打开文件并在其中添加新的文本:
fo = open("foo.txt", "a")
text = "TutorialsPoint has a fabulous Python tutorial"
fo.write(text)
fo.close()
如果你用类似记事本这样的文本编辑器应用程序打开这个文件,它将包含以下内容:
Python is a great language.
Yeah its great!!
TutorialsPoint has a fabulous Python tutorial
在读写模式下写入文件
当以 'w'
或 'a'
模式打开文件用于写入时,无法在文件的较早位置执行写入操作。然而,'w+'
模式允许在不关闭文件的情况下同时进行读写操作。seek()
函数用于将读/写指针移动到文件内的任意期望位置。
使用 seek()
方法
seek()
方法用于设置文件内读/写指针的位置。seek()
方法的语法如下:
fileObject.seek(offset[, whence])
其中,
-
offset
—— 这是指定文件内读/写指针的位置。
-
whence
—— 这是可选的,默认为 0
表示绝对文件定位,其他值为 1
表示相对于当前位置定位,2
表示相对于文件末尾定位。
示例
下面的程序演示了如何以读写模式 ('w+'
) 打开文件,写入一些初始数据,移动到特定位置,然后重写部分文件内容:
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