如何在 Python 3 中处理纯文本文件

介绍

Python 是处理数据的绝佳工具,其中一些最常见的编程任务包括阅读、写入或操纵数据,因此,知道如何处理存储不同类型的数据的不同文件格式尤其有用。

例如,考虑一个 Python 程序,它检查了 列表的用户访问控制. 您的用户列表可能被存储为文本文件,允许您检查访问权限或修改权限。

本教程将简要描述一些Python能够处理的文件格式. 对这些文件的简短介绍后,您将学习如何在Python中打开,阅读和写文本文件 3. 当您完成时,您将能够在Python中处理任何简单文本文件。

前提条件

对于本教程,您应该安装Python 3以及在您的计算机上设置的本地编程环境。

背景

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

花样类型************************************************************************************************************************************************************************************************************************************************************ 纯文本 QQ 纯文本文件存储只代表字符( 或 [字符串 (https://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3 ) ) 的数据,并排除任何结构化的元数据 QQ QQ CSV QQ 逗号分隔值文件 使用逗号( 或其他分隔符) 来构建所存储的数据, 允许以表格格式 QQ QQQ 保存数据 HTML QQ 超文本标记 语言文件存储拟由浏览器显示的结构化数据,通常与网站 QQ | JSON QJavaScript 一起使用 对象标记是一种简单而高效的格式,使其成为存储和传输结构化数据最常用的格式之一QQ

本教程将专注于使用 plain text 文件。

步骤 1 - 创建文本文件

在我们可以开始在Python工作之前,我们需要确保我们有一个文件可以使用,然后打开代码编辑器并创建一个名为days.txt的新文本文件。

在新文件中,输入几个文本行列出每周的日子:

1[label days.txt]
2Monday
3Tuesday
4Wednesday
5Thursday
6Friday
7Saturday
8Sunday

接下来,保存你的文件,并记住它的位置. 对于这个例子,我们的用户 sammy,在这里保存了文件为 /home/sammy/days.txt. 这将在后面的步骤中非常重要,在那里我们在Python中打开文件。

现在你有一个文件要处理,你可以开始编码。

步骤 2 - 打开文件

在代码编辑器中,创建一个新的Python文件,并将其命名为files.py。

要在Python中打开一个文件,我们首先需要以某种方式将磁盘上的文件与Python中的变量(LINK0)联系起来。这个过程被称为 opening 一个文件,而变量被称为 file handle。我们首先要告诉Python文件的位置。

1[label files.py]
2path = '/home/sammy/days.txt'

现在,您可以使用Python的open()函数来打开我们的days.txt文件。open()函数需要文件路径作为其第一个参数。该函数也接受许多其他参数。然而,最重要的是可选的模式参数。这是一个可选的字符串,指定文件被打开的 _mode。您选择的模式将取决于您想要用该文件做些什么。

  • 'r':用于从文件中读取
  • 'w':用于写入文件
  • 'a':用于附加到文件
  • 'r+':用于读取和写入相同的文件

在本示例中,我们只想从文件中读取,所以我们将使用r模式. 使用open()函数打开days.txt文件,并将结果的文件处理分配给变量days_file

1[label files.py]
2days_file = open(path, 'r')

现在你已经打开了文件,下一步将带你通过阅读其内容。

步骤 3 - 阅读文件

由于我们的文件已被打开,我们现在可以通过它被分配的变量来操纵它(即读取它)。

使用阅读

第一個「read()」操作以單一字符串的形式返回檔案的全部內容,例如:

1days_file.read()

结果将是:

1[secondary_label Output]
2'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'

<$>[注] **注:**上面的字符串中的\n代表一个新行字符。当你直接与Python进行交互时(就像你从命令行运行python时一样),它会使用\n来显示新行字符串。

使用readline

第二个操作readline()返回文件的下一个行,返回文本,包括下一个新行字符。

1days_file.readline()

结果将是:

1[secondary_label Output]
2'Monday\n'

一旦你用readline操作读到一行,当前读到该文件的点将移动到下一个行. 如果你要再次调用此操作,它会返回文件中的下一个行:

1days_file.readline()
1[secondary_label Output]
2'Tuesday\n'

使用readlines

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

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

要记住,当你从文件中读到某个文件时,一旦使用其中一个读取操作读到某个文件,它就不能再读一次,例如,如果你要先运行days_file.read(),然后是days_file.readlines(),第二个操作会返回一个空的字符串,因此,任何时候你想要从一个文件中读到,你都必须先打开一个新的文件变量或使用seek()方法,这超出了本教程的范围。

现在我们已经从一个文件中读到,让我们学习如何写到一个新的文件。

步骤 4 - 写一个文件

在此步骤中,您将写一个新的文件,其中包含名称 Days of the Week 然后是第一个文件的内容。

1[label files.py]
2title = 'Days of the Week\n'

您还需要将周日存储在一个变量中,我们将称之为。这个代码在阅读模式下打开文件,读取文件,并将从阅读操作中返回的输出存储在我们的新变量

1[label files.py]
2path = '/home/sammy/days.txt'
3days_file = open(path, 'r')
4days = days_file.read()

现在,你已经有标题和周日的变量,你可以开始写到你的新文件. 首先,指定文件的位置. 再次,我们将使用目录 /home/sammy/,所以我们的路径将是 /home/sammy/new_days.txt. 然后你可以打开新文件在写模式中,使用 open() 函数与指定的 `'w' 模式。

1[label files.py]
2new_path = '/home/sammy/new_days.txt'
3new_days = open(new_path, 'w')

<$>[警告] ** 注意:** 重要的是要注意,如果在打开文件之前已经存在new_days.txt,它的旧内容将被重写,所以在使用w模式时要小心! <$>

一旦新文件被打开,您可以使用 write() 方法添加数据. 此方法采用单个字符串参数,并将该数据写入文件中。

写入文件的标题,然后是每周的日子,这可能有助于添加一些打印的陈述,我们正在写到文件,这通常用于跟踪你的脚本的进度。

1[label files.py]
2new_days.write(title)
3print(title)
4
5new_days.write(days)
6print(days)

最后,当你完成一个文件时,关闭它很重要。

步骤 5 - 关闭文件

关闭文件确保了磁盘上的文件和文件处理器之间的连接完成. 关闭文件还确保了其他程序能够访问它们并保持您的数据安全. 如果您不使用在 步骤 6中描述的陈述,请始终确保关闭您的文件。

1[label files.py]
2days_file.close()
3new_days.close()

现在,脚本已经完成使用文件,它使用 close()方法释放了文件处理器。

步骤 6 — 使用陈述(可选)

在Python中使用文件(通常称为Pythonic方法)的建议方法是使用一种名为语句的语言功能,这些语句是设置一个工作完成的 context 的简短方式,一旦这个背景结束,最终的细节会自动处理以防止常见的错误。

与Python中的任何一个区块一样,如函数定义,如果声明或循环,声明的形式是简单的声明,其次是:声明和入口代码的块。

1with open('/home/sammy/days.txt', 'r') as days_file:
2    days = days_file.read()
3    print(days)

像之前一样,我们使用Python内置的open()函数打开文件,通过文件路径和模式参数。然而,由于我们正在使用with语句,而不是将结果的文件处理分配给使用=的变量,我们使用as关键字分配它。

1with action as result:
2    . . .

: 之后,我们转到下一行并输入我们的代码,这就是 Python 如何组织功能块的方式。 就像以前一样,我们可以访问 days_file 变量中的文件处理器,所以我们可以使用 read() 方法来获取所有内容并 print() 它们。

请注意,没有一个被称为关闭()的方法,然而,这是因为一旦代码离开了这个块(即,一旦下一行代码没有被注入或文件结束),声明的背景知道会自动关闭这些文件。

考虑到这一点,让我们在使用语句之前重写我们的代码表格:

1[label files.py]
2with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
3    days = days_file.read()
4
5    new_days.write(title)
6    new_days.write(days)
7
8print(title)
9print(days)

现在代码更有组织性了,我们像以前一样开始定义一些变量:我们的两个文件的路径和我们将使用的标题来标题新文件之后,我们开始我们的with声明,打开我们的两个文件,并将它们的连接存储在适当命名的变量中。像以前一样,我们阅读days_file的内容,然后将标题和这些内容写入new_days。最后,我们通过删除我们的代码来结束该块,以打印我们读到的titledays的值。

<$>[注] **注:**不同于Python中的某些其他区块,在区块中定义的变量在该范围之外可用。

虽然有些情况下,您将希望使用如上所述的 close()方法,并且重要的是要知道它是如何工作的,但在Python中使用文件时,您通常会使用with语句。

步骤7 - 检查我们的代码

在运行代码之前,最好确保一切看起来都是正确的,最终的产品应该是这样的:

 1[label files.py]
 2path = '/home/sammy/days.txt'
 3new_path = '/home/sammy/new_days.txt'
 4title = 'Days of the week\n'
 5
 6with open(path, 'r') as days_file, open(new_path, 'w') as new_days:
 7    days = days_file.read()
 8
 9    new_days.write(title)
10    new_days.write(days)
11
12print(title)
13print(days)

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

1python files.py

产量将如下:

 1[secondary_label Output]
 2Days of the Week
 3
 4Monday
 5Tuesday
 6Wednesday
 7Thursday
 8Friday
 9Saturday
10Sunday

现在,通过打开新文件(new_days.txt)来双重检查完全工作的代码。

1[label new_days.txt]
2Days of the Week
3Monday
4Tuesday
5Wednesday
6Thursday
7Friday
8Saturday
9Sunday

结论

在本教程中,我们探讨了如何在Python中处理和操纵简单文本文件3;现在您可以在Python中打开,阅读,写入和关闭文件,并且您可以继续在Python中使用自己的数据。

Published At
Categories with 技术
comments powered by Disqus