如何在Python3中处理纯文本文件

来自菜鸟教程
跳转至:导航、​搜索

介绍

Python是处理数据的好工具。 您编写的任何程序都可能涉及读取、写入或操作数据。 因此,了解如何处理存储不同类型数据的不同文件格式尤其有用。

例如,考虑一个 Python 程序,它检查用户的 list 以进行访问控制。 您的用户列表可能会存储并保存在文本文件中。 也许您没有使用文本,而是有一个进行财务分析的程序。 为了进行一些数字运算,您可能必须从保存的电子表格中输入这些数字。 无论您的应用程序如何,几乎可以保证会涉及到输入或输出数据。

本教程将简要介绍 Python 能够处理的一些格式类型。 在简要介绍了文件格式之后,我们将介绍如何在 Python 3 中打开、读取和写入文本文件。

完成本教程后,您将能够在 Python 中处理任何文本文件。

先决条件

对于本教程,您应该安装 Python 3 并在您的计算机上设置本地编程环境。 如果不是这种情况,您可以按照适合您的操作系统的安装和设置指南进行设置:

背景

Python 非常灵活,可以相对轻松地处理许多不同的文件格式,包括但不限于以下内容:

文件类型 描述
文本文件 纯文本文件存储仅表示字符(或 字符串 )的数据,并排除任何结构化元数据
CSV 逗号分隔值文件使用逗号(或其他分隔符)来构造存储的数据,允许以表格格式保存数据
HTML 超文本标记语言文件存储结构化数据,通常用于大多数网站
JSON JavaScript Object Notation 是一种简单高效的格式,使其成为存储和传输数据最常用的格式之一

本教程将重点介绍 txt 文件格式。

第 1 步 — 创建文本文件

在我们开始使用 Python 之前,我们需要确保我们有一个可以使用的文件。 为此,我们将打开一个文本编辑器并创建一个新的 txt 文件,我们将其命名为 days.txt

在新文件中,输入几行文本。 在此示例中,让我们列出一周中的日期:

天.txt

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

接下来,保存您的文件并确保您知道将其放置在何处。 在我们的示例中,我们的用户 sammy 将文件保存在此处:/users/sammy/days.txt。 这在后面的步骤中非常重要,我们在 Python 中打开文件。

现在我们有一个 txt 文件要处理,我们可以开始我们的代码了!

第 2 步 — 打开文件

在我们编写程序之前,我们必须创建一个 Python 编程文件,所以用你的文本编辑器创建文件 files.py。 为方便起见,请将其保存在与我们的 days.txt 文件相同的目录中:/users/sammy/

要在 Python 中打开文件,我们首先需要某种方法将磁盘上的文件与 Python 中的 变量 相关联。 这个过程称为打开一个文件。 我们首先告诉 Python 文件在哪里。 文件的位置通常称为文件 路径 。 为了让 Python 打开你的文件,它需要路径。 我们的 days.txt 文件的路径是:/users/sammy/days.txt。 在 Python 中,我们将创建一个字符串变量来存储这些信息。 在我们的 files.py 脚本中,我们将创建 path 变量并将变量设置为 days.txt 路径。

文件.py

path = '/users/sammy/days.txt'

然后我们将使用 Python 的 open() 函数打开我们的 days.txt 文件。 open() 函数需要文件路径作为其第一个参数。 该函数还允许许多其他参数。 但是,最重要的是可选的 mode 参数。 Mode 是一个可选字符串,它指定打开文件的模式。 您选择的模式取决于您希望对文件执行的操作。 以下是我们的一些模式选项:

  • 'r' : 用于读取
  • 'w' : 用于写入
  • 'x' :用于创建和写入新文件
  • 'a' :用于附加到文件
  • 'r+' : 用于读取和写入同一个文件

在这个例子中,我们只想从文件中读取,所以我们将使用 'r' 模式。 我们将使用 open() 函数打开 days.txt 文件并将其分配给变量 days_file

文件.py

days_file = open(path,'r')

打开文件后,我们可以从中读取,这将在下一步中进行。

第 3 步 — 读取文件

由于我们的文件已经打开,我们现在可以操作它(即 从中读取)通过我们分配给它的变量。 Python 提供了三个相关的操作来从文件中读取信息。 我们将展示如何使用所有三个操作作为示例,您可以尝试了解它们的工作原理。

第一个操作 <file>.read() 将文件的全部内容作为单个字符串返回。

days_file.read()
Output'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'

第二个操作 <file>.readline() 返回文件的下一行,返回直到并包括下一个换行符的文本。 更简单地说,此操作将逐行读取文件。

days_file.readline()
Output'Monday\n'

因此,一旦您使用 readline 操作读取了一行,它将传递到下一行。 因此,如果您再次调用此操作,它将返回文件中的下一行,如图所示。

days_file.readline()
Output'Tuesday\n'

最后一个操作 <file>.readlines() 返回文件中行的列表,其中列表的每个项目代表一行。

days_file.readlines()
Output['Monday\n', 'Tuesday\n', 'Wednesday\n', 'Thursday\n', 'Friday\n', 'Saturday\n', 'Sunday\n']

从文件中读取时要记住的一点是,一旦使用其中一种读取操作读取了文件,就无法再次读取它。 例如,如果您首先运行 days_file.read(),然后运行 days_file.readlines(),则第二个操作将返回一个空字符串。 因此,无论何时您希望从文件中读取数据,您都必须首先打开一个新的文件变量。 现在我们已经从文件中读取了,让我们学习如何写入新文件。

第 4 步 — 编写文件

在这一步中,我们将编写一个新文件,其中包含标题 Days of the Week 和星期几。 首先,让我们创建我们的 title 变量。

文件.py

title = 'Days of the Week\n'

我们还需要将星期几存储在一个字符串变量中,我们将其称为 days。 为了更容易理解,我们包含了上述步骤中的代码。 我们以读取模式打开文件,读取文件,并将读取操作返回的输出存储在我们的新变量 days 中。

文件.py

path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()

现在我们有了标题和星期几的变量,我们可以开始写入我们的新文件。 首先,我们需要指定文件的位置。 同样,我们将使用目录 /users/sammy/。 我们必须指定我们希望创建的新文件。 所以,我们的路径实际上是 /users/sammy/new_days.txt。 我们在 new_path 变量中提供我们的位置信息。 然后我们以写入模式打开我们的新文件,使用 open() 函数并指定 'w' 模式。

文件.py

new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')

需要注意的是,如果 new_days.txt 在打开文件之前已经存在,那么它的旧内容就会被破坏,所以在使用 'w' 模式时要小心。

打开新文件后,我们可以使用写入操作 <file>.write() 将数据放入文件中。 写入操作采用单个参数,该参数必须是字符串,并将该字符串写入文件。 如果要在文件中开始新行,则必须显式提供换行符。 首先,我们将标题写入文件,然后是星期几。 让我们还添加一些我们正在编写的打印语句,这通常是跟踪脚本进度的好习惯。

文件.py

new_days.write(title)
print(title)

new_days.write(days)
print(days)

最后,每当我们完成一个文件时,我们需要确保关闭它。 我们在最后一步中展示了这一点。

第 5 步 — 关闭文件

关闭文件确保磁盘上的文件和文件变量之间的连接完成。 关闭文件还可以确保其他程序能够访问它们并确保您的数据安全。 因此,请始终确保关闭您的文件。 现在,让我们使用 <file>.close() 函数关闭所有文件。

文件.py

days_file.close()
new_days.close()

我们现在已经完成了 Python 文件的处理,可以继续查看我们的代码。

第 6 步 — 检查我们的代码

在我们运行我们的代码之前,让我们确保一切看起来都很好。 最终产品应如下所示:

文件.py

path = '/users/sammy/days.txt'
days_file = open(path,'r')
days = days_file.read()


new_path = '/users/sammy/new_days.txt'
new_days = open(new_path,'w')

title = 'Days of the Week\n'
new_days.write(title)
print(title)

new_days.write(days)
print(days)

days_file.close()
new_days.close()

保存代码后,打开终端并运行 Python 脚本,如下所示:

python files.py

我们的输出应该是这样的:

OutputDays of the Week

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

现在,让我们通过打开我们的新文件 (new_days.txt) 来仔细检查我们的代码是否完全正常工作。 如果一切顺利,当我们打开新文件时,它应该如下所示:

new_days.txt

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

您的文件将看起来相同或相似——您已成功完成本教程!

结论

在本教程中,我们介绍了如何在 Python 3 中处理和操作纯文本文件。 现在您可以在 Python 中打开、读取、写入和关闭文件,并且可以继续在 Python 中处理自己的数据。