在 Python 中,使用内置函数 open()
来打开文件。该函数有两个参数,第一个参数是文件路径(相对路径或绝对路径),第二个参数是打开方式。包括读取模式 ('r')、写入模式('w')、追加模式('a')、二进制读取模式('rb')、二进制写入模式('wb')等。
例如,以下代码打开一个文件:
# 打开文件
f = open('test.txt', mode='r', encoding='utf-8')
以上代码中,我们使用 open()
函数打开了一个名为 test.txt
的文件,并以只读模式('r')打开,同时指定了文件编码方式为 'utf-8'。需要注意的是,如果在指定的路径下没有找到对应的文件,Python会报错。另外,如果文件指定的访问模式不正确,也会导致程序出现错误。
Python 中最常用的基于字符串的文件读取方法是 read()
、readline()
和 readlines()
。下面我们将逐一介绍这三种方法。
read()
read()
方法可以一次性读取整个文件的内容,并返回一个字符串。例如,我们有一个名为 test.txt
的文件,其中包含了一些文本内容,那么我们可以通过以下代码读取该文件并打印其内容:
with open('test.txt', 'r') as f:
content = f.read()
print(content)
以上代码中,我们首先使用 open()
函数打开文件 test.txt
,并以只读模式('r')打开。接着,我们使用 read()
方法读取文件内容,并将读取到的内容存储到变量 content
中。最后,我们打印变量 content
的值,即可输出文件内容。
readline()
readline()
方法用于逐行读取文件内容,并返回一个字符串。例如,我们有一个名为 test.txt
的文件,其中包含了若干行文本内容,那么我们可以通过以下代码读取该文件并打印其内容:
with open('test.txt', 'r') as f:
line = f.readline()
while line:
print(line.strip())
line = f.readline()
以上代码中,我们首先使用 open()
函数打开文件 test.txt
,并以只读模式('r')打开。接着,我们使用 readline()
方法读取文件的第一行内容,并将读取到的内容存储到变量 line
中。然后,我们使用一个 while 循环,在每次循环时输出变量 line
的值。注意,由于 readline()
方法会自动带入行末换行符,因此我们需要使用 strip()
方法去掉字符串尾部的空白符。
readlines()
readlines()
方法用于读取整个文件的所有行,并返回一个字符串列表。例如,我们有一个名为 test.txt
的文件,其中包含了若干行文本内容,那么我们可以通过以下代码读取该文件并打印其内容:
with open('test.txt', 'r') as f:
lines = f.readlines()
for line in lines:
print(line.strip())
以上代码中,我们首先使用 open()
函数打开文件 test.txt
,并以只读模式('r')打开。接着,我们使用 readlines()
方法读取文件的所有内容,并将读取到的内容存储到变量 lines
中。然后,我们使用一个 for 循环,在每次循环时输出 lines
列表中的每一项。同样地,由于 readlines()
方法会自动带入行末换行符,因此我们需要使用 strip()
方法去掉字符串尾部的空白符。
Python 中的另一种常见的文件读取方法是基于字节的读取方法,即 read()
方法的参数变为了文件长度,以字节为单位,而返回值是一个二进制数据。我们可以使用 Python 的 struct
模块对这些二进制数据进行解析和转换。下面的示例演示了如何使用基于字节的方法读取文件:
import struct
with open('test.bin', 'rb') as f:
data = f.read(4)
x = struct.unpack('>i', data)
print(x[0])
以上代码中,我们首先使用 open()
函数打开一个名为 test.bin
的二进制文件,并以二进制读取模式('rb')打开。接着,我们使用 read()
方法读取文件前四个字节的二进制数据,并将其存储到变量 data
中。然后,我们使用 struct.unpack()
方法将 data
转换为一个整数,并将其存储到变量 x
中。注意,struct.unpack()
方法返回的是一个元组,我们需要使用索引 [0]
取出其中的整数值。最后,我们打印变量 x
的值。
除了文件读取外,Python 还提供了多种不同的方法来实现文件写入。文件写入主要包括两种模式:覆盖模式和追加模式。
在覆盖模式下,文件的原有内容会被新的内容完全替换掉。我们可以通过以下代码来向一个名为 test.txt
的文件中写入一些文本内容:
with open('test.txt', 'w') as f:
f.write('hello world!\n')
以上代码中,我们首先使用 open()
函数打开一个名为 test.txt
的文件,并以只写模式('w')打开。接着,我们使用 write()
方法将字符串 'hello world!\n'
写入文件中。注意,由于在 Unix 系统中,每行文本的末尾需要添加一个换行符,因此我们需要在字符串尾部手动添加一个换行符。
在追加模式下,新的内容会被添加到文件的原有内容之后。我们可以通过以下代码来向一个名为 test.txt
的文件中追加一些文本内容:
with open('test.txt', 'a') as f:
f.write('hello world again!\n')
以上代码中,我们首先使用 open()
函数打开一个名为 test.txt
的文件,并以追加模式('a')打开。接着,我们使用 write()
方法将字符串 'hello world again!\n'
写入文件中。由于在 Unix 系统中,每行文本的末尾需要添加一个换行符,因此我们需要在字符串尾部手动添加一个换行符。
至此,我们已经完成了文件操作的基础知识介绍。在实际的操作中,还有许多高级的文件操作技巧可以学习和掌握,希望大家能够深入学习文件操作相关的知识,提高编程技能。