Python基础:文件操作,打开文件,读取文件和写入文件

文件读写   2024-04-05 23:46   329   0  

Python 的文件操作非常灵活和友好,可以读写各种类型的文件,例如文本文件、二进制文件、图片、音视频等。

1 打开文件

在 Python 中,使用内置函数 open() 来打开文件。该函数有两个参数,第一个参数是文件路径(相对路径或绝对路径),第二个参数是打开方式。包括读取模式 ('r')、写入模式('w')、追加模式('a')、二进制读取模式('rb')、二进制写入模式('wb')等。

例如,以下代码打开一个文件:

# 打开文件
f = open('test.txt', mode='r', encoding='utf-8')

以上代码中,我们使用 open() 函数打开了一个名为 test.txt 的文件,并以只读模式('r')打开,同时指定了文件编码方式为 'utf-8'。需要注意的是,如果在指定的路径下没有找到对应的文件,Python会报错。另外,如果文件指定的访问模式不正确,也会导致程序出现错误。

2 读取文件

1) 基于字符串的文件读取

Python 中最常用的基于字符串的文件读取方法是 read()readline()readlines()。下面我们将逐一介绍这三种方法。

1. read()

read() 方法可以一次性读取整个文件的内容,并返回一个字符串。例如,我们有一个名为 test.txt 的文件,其中包含了一些文本内容,那么我们可以通过以下代码读取该文件并打印其内容:

with open('test.txt', 'r') as f:
   content = f.read()
print(content)

以上代码中,我们首先使用 open() 函数打开文件 test.txt,并以只读模式('r')打开。接着,我们使用 read() 方法读取文件内容,并将读取到的内容存储到变量 content 中。最后,我们打印变量 content 的值,即可输出文件内容。

2. 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() 方法去掉字符串尾部的空白符。

3. 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() 方法去掉字符串尾部的空白符。

2) 基于字节的文件读取

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 的值。

2 文件写入

除了文件读取外,Python 还提供了多种不同的方法来实现文件写入。文件写入主要包括两种模式:覆盖模式和追加模式。

1) 覆盖模式

在覆盖模式下,文件的原有内容会被新的内容完全替换掉。我们可以通过以下代码来向一个名为 test.txt 的文件中写入一些文本内容:

with open('test.txt', 'w') as f:
   f.write('hello world!\n')

以上代码中,我们首先使用 open() 函数打开一个名为 test.txt 的文件,并以只写模式('w')打开。接着,我们使用 write() 方法将字符串 'hello world!\n' 写入文件中。注意,由于在 Unix 系统中,每行文本的末尾需要添加一个换行符,因此我们需要在字符串尾部手动添加一个换行符。

2) 追加模式

在追加模式下,新的内容会被添加到文件的原有内容之后。我们可以通过以下代码来向一个名为 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 系统中,每行文本的末尾需要添加一个换行符,因此我们需要在字符串尾部手动添加一个换行符。

至此,我们已经完成了文件操作的基础知识介绍。在实际的操作中,还有许多高级的文件操作技巧可以学习和掌握,希望大家能够深入学习文件操作相关的知识,提高编程技能。

(原创不易,喜欢请随手点赞关注评论,实用内容不断更新,谢谢)


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。