Python 简明教程
Python - Write to File
对文件进行写入涉及以特定模式打开文件、向其写入数据,然后关闭文件以确保保存所有数据并释放资源。 Python 提供了一个内置函数 open() 来处理文件操作和各种写入数据的方法。
Opening a File for Writing
打开文件进行写入是执行 Python 中写入操作的第一步。open() 函数用于以不同模式打开文件,每种模式都适用于特定用例。
File Modes for Writing
以下是用于将文件打开为写入模式的主要模式 −
-
w (Write mode) − 打开文件以供写作。如果该文件存在,它将在写作之前截断(清空)该文件。如果该文件不存在,则创建一个新文件。
-
a (Append Mode) − 数据应该写入文件末尾。如果该文件不存在,则创建一个新文件。
-
x (Exclusive Creation Mode) − 打开该文件以供唯一创建。如果该文件已经在,则该操作会失败。
-
b (Binary Mode) − 当与其他模式一同使用时,以二进制模式打开该文件。
-
+ (Update Mode) − 打开该文件以供更新(读写)。
当你想从头开始,每次打开该文件时,往该文件里写入数据时,使用该模式 −
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!!
Writing to a File Using write() Method
write() 方法用来将一个字符串写入文件。这使其适用于各种基于文本的文件操作。
write() 方法采取单个参数:你想写入文件的字符串。它将该字符串的确切内容写入文件,而无需添加任何附加字符,例如换行符。
Writing to a File Using writelines() Method
writelines() 方法用来将一个字符串列表写入文件。列表中的每一个字符串都被顺序写入文件,无需自动添加任何换行符。
Example
在这个示例中,我们创建一个字符串列表 lines,列表中的每个字符串都以换行符结尾。然后我们以写入模式打开文件“example.txt”,并使用 writelines() 方法将列表中的所有字符串一次性写入文件 −
# List of lines to write to the file
lines = ["First line\n", "Second line\n", "Third line\n"]
# Open a file in write mode
with open("example.txt", "w") as file:
file.writelines(lines)
print ("File opened successfully!!")
获得的输出如下所示 −
File opened successfully!!
Writing to a New File
在 Python 中写入新文件需要创建一个新文件(或覆盖现有的文件)并向其中写入所需内容。在此,我们将解释写入新文件的步骤 −
-
Open the File − 使用 open() 函数以写入模式(二进制文件为“w”或“wb”)创建或打开一个文件。
-
Write Data − 使用 write() 或 writelines() 方法向文件写入数据。
-
Close the File − 确保在写入后正确地关闭文件,通常使用“with”语句进行自动处理。
Writing to a New File in Binary Mode
默认情况下,文件对象上的读/写操作在文本字符串数据上执行。如果我们需要处理不同类型文件,比如媒体文件(mp3)、可执行文件(exe)或图片(jpg),我们必须通过将 'b' 前缀添加到读/写模式中,以二进制模式打开文件。
Writing to an Existing File
当以写模式('w')打开现有文件时,其以前的内容会被清除。以写权限打开文件会将其视为新文件。要将数据添加到现有文件中而不清除其内容,您应该以追加模式('a')打开文件。
Example
以下示例演示如何以追加模式打开文件并在其中添加新文本 −
# 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()
如果你使用任何文本编辑应用程序(如记事本)打开此文件,它将具有以下内容 −
Python is a great language.
Yeah its great!!
TutorialsPoint has a fabulous Python tutorial
Writing to a File in Reading and Writing Modes
当使用 'w' 或 'a' 打开文件进行写入时,无法在文件中的任何早期字节位置执行写操作。然而,'w+' 模式可以在不关闭文件的情况下执行读写操作。seek() 函数用于将读/写指针移动到文件中的任何所需字节位置。
Using the seek() Method
seek() 方法用于设置文件内读/写指针的位置。seek() 方法的语法如下 −
fileObject.seek(offset[, whence])
其中,
-
offset − 这是文件内读/写指针的位置。
-
whence − 这是可选的,默认为 0,表示绝对文件定位,其他值为 1,表示相对于当前位置查找,2 表示相对于文件末尾查找。
以下程序演示如何以读写模式('w+')打开文件,写入一些数据,查找特定位置,然后覆盖文件内容的一部分 −
# Open a file in read-write mode
fo = open("foo.txt", "w+")
# Write initial data to the file
fo.write("This is a rat race")
# Move the read/write pointer to the 10th byte
fo.seek(10, 0)
# Read 3 bytes from the current position
data = fo.read(3)
# Move the read/write pointer back to the 10th byte
fo.seek(10, 0)
# Overwrite the existing content with new text
fo.write('cat')
# Close the file
fo.close()
如果我们在读取模式下打开文件(或在 'w+' 模式下找到起始位置)并读取内容,它将显示以下内容 −
This is a cat race