跳转至

Day9

本文总阅读量次 ,原创教程,严禁转载

Day9:读写文件

根据你所编写的程序类型,你需要保存或访问信息。为此,你需要了解如何处理文件,无论是创建、写入还是读取文件。

为了跟今天的学习内容,请在"Week_06"笔记本最下面添加一个markdown单元格,并写上“读写文件”。

1 处理文本文件(.txt文件)

默认情况下,Python带有一个open()函数,它允许我们创建或修改文件。这个函数可接受两个参数:“文件名”和“操作模式”。

输入的文件名如过已经存在,那么程序将打开文件并修改;否则,它将创建该文件。操作模式参数则告诉Python打开和处理文件方式。

例如,如果只是需要从文件中获取信息,那么可以以只读模式打开。以只读模式打开文件,可以防止文件意外修改。

下面,让我们学习如何打开、写入和读取文本文件。

1| # 打开/创建和写入一个文本文件
2| f = open("test.txt", "w+")   # 以“读写”模式打开文件
3| f.write("this is a test")
4| f.close( )
5| # 读取文本文件
6| f = open("test.txt", "r")
7| data = f.read( )
8| f.close( )
9| print(data)

运行上端代码。

让我们一行一行地来研究这段代码。

为了对文件进行编辑,我们以“读和写”模式打开文件,并将值赋给变量f

在第3行,我们使用write()方法将句子写入文件,随后关闭文件。

记住,如果你打开了一个文件,一定记得在完成文件操作后关闭该文件。

在我们创建测试文件并写入内容后,我们又以只读模式将其打开。在第7行,我们使用read()方法将文件的所有内容读取为一个字符串,该字符串被分配给我们的data变量,然后输出文本信息。

注意: “w”模式会完全覆盖文件,当需要像文本中添加内容时,使用“a”模式打开文件。

2 向CSV文件中写入内容

CSV文件中以逗号将每个数据分隔开,这就是所谓的表格数据结构。

Python中有一个“csv”标准库,方便我们操作CSV文件。在使用这个库时,我们需要先导入它。

导入这个库之后,我们将使用另一种方法打开文件,即使用with关键字。with关键字这一概念,就像是一个while循环(译者注:while循环中的代码运行完以后,while循环将自动关闭)。

当文件打开时,我们可以使用它,一旦代码块运行完毕,它会自动为我们关闭文件。

让我们来看看这个例子:

1| # 打开/创建和写入一个CSV文件
2| import csv
3| with open("test.csv", mode="w", newline="") as f:
4|    writer = csv.writer(f, delimiter=",")
5|    writer.writerow( ["Name", "City"] )
6|    writer.writerow( ["Craig Lou", "Taiwan"] )

运行上端代码。让我们一行一行地学习这段代码。

在第2行导入CSV库,随后我们以“写入”模式打开文件并赋值给变量f

我们还将参数newline设置为空字符串,以防止在行之间创建空行。

在第4行,我们创建了一个writer变量,它允许我们写入CSV文件。

最后两行代码将两行数据写入CSV文件。这段代码运行完毕后,文件将自动关闭。

继续检查文件,你将看到一个CSV文件。

请记住,写入模式总是会覆盖之前文件中的所有数据。

3 读取CSV文件

为了从我们刚刚创建的CSV文件中读取数据,我们可以以“只读”模式打开文件:

1| # 读取CSV文件
2| with open("test.csv", mode="r") as f:
3|    reader = csv.reader(f, delimiter=",")
4|    for row in reader:
5|            print(row)

运行上端代码。

你将注意到,它将每行数据以列表形式输出,每个列表内包含了2个元素。我们以只读模式打开文件并作为变量f

之后,我们通过CSV库创建一个reader对象,该对象将为我们读取文件中的内容。然后我们循环reader变量并输出每一个数据。

注意: 我们下周将学习“对象”有关知识。

4 Python中的文件操作模式

表 6-2 列举了Python中几种操作文件的模式

操作模式 描述
'r' 默认模式,即只读模式
'w' 写入模式。如果文件不存在,则创建一个文件
'x' 创建新文件,如果文件存在,则操作失败
'a' 追加模式,如果文件不存在,则创建一个文件
'b' 以二进制模式打开文件
'+' 读写模式, 适合更新文件

5 今日练习

  1. 用户输入: 让用户输入幸运数字,并将这些数字保存到文本文件中。
  2. 数据转存: 将下面字典中的数据保存到csv文件中,以“键”作为标题,以“值”作为数据行。
    >>> data = {
    'name' : ['Dave', 'Dennis', 'Peter', 'Jess'],
    'language': ['Python', 'C', 'Java', 'Python']
    }
    

今日小结

今天我们学习了如何处理文本文件和CSV文件。

有两种处理文件的方法,每种方法都有各自的用途,但是通常使用with语句。

上一篇:Day8元组、集合、不可变集合
下一篇:Day10使用CSV文件创建用户数据库