介绍
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
。最后,我们通过删除我们的代码来结束该块,以打印我们读到的title
和days
的值。
<$>[注]
**注:**不同于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中使用自己的数据。