百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python写入文件–解释了打开,读取,追加和其他文件处理功能

off999 2024-10-04 00:20 17 浏览 0 评论

使用文件:基本语法

其中一个最重要的功能,你将需要为你在Python文件工作,用的是open(),内置的打开一个文件,并允许你的程序与它使用和工作的功能。这是基本语法:

提示:这是两个最常用的参数来调用这个函数。还有六个其他可选参数。

第一个参数:文件

open()函数的第一个参数是file,您要使用的文件的绝对或相对路径。我们通常使用相对路径,该路径指示文件相对于调用该open()函数的脚本(Python文件)的位置。 例如,此函数调用中的路径:

仅包含文件名。当您要打开的文件与Python脚本位于同一目录或文件夹中时,可以使用此命令,例如:

但是,如果文件位于嵌套文件夹中,则如下所示:

然后,我们需要使用特定的路径来告诉函数该文件在另一个文件夹中。在此示例中,这里是路径:

请注意,我们正在data/首先编写(文件夹的名称,后跟a /),然后编写(names.txt具有扩展名的文件的名称)。

提示:.txt点号后面的三个字母names.txt是文件的“扩展名”或其类型。在这种情况下,.txt表示它是一个文本文件。

第二个参数:模式

open()函数的第二个参数是mode,一个具有一个字符的字符串。该单个字符基本上可以告诉Python你打算如何处理程序中的文件。

可用的模式有:

  1. 阅读("r")。
  2. 追加("a")
  3. 写("w")
  4. 建立("x")

你还可以选择在以下位置打开文件:

  1. 文字模式("t")
  2. 二进制模式("b")

要使用文本或二进制模式,你需要将这些字符添加到主模式。例如:"wb"表示以二进制模式写入。

提示:默认模式为阅读("r")和文本("t"),表示“打开以阅读文本”("rt"),因此,open()如果要使用它们,则无需指定它们,因为它们是默认分配的。你可以简单地编写open(<file>)。

为什么选择模式?

对于Python,仅根据你计划对该文件执行的操作授予某些权限确实是对的,对吧?为什么Python应该允许你的程序执行不必要的工作?这基本上就是模式存在的原因。

考虑一下-允许程序执行不必要的工作可能会遇到问题。例如,如果你只需要读取文件的内容,则允许你的程序意外修改它可能很危险,这可能会引入错误。

如何读取文件

既然你对open()函数采用的参数有了更多的了解,让我们看看如何打开文件并将其存储在变量中以在程序中使用它。

这是基本语法:

我们只是将返回的值分配给变量。例如:

我知道你可能会问:返回的是哪种类型的值open()? 这是,一个 文件对象。

文件对象

根据Python文档,文件对象是:一个对象,将面向文件的API(使用诸如read()或write()之类的方法)暴露给基础资源。

这基本上是在告诉我们文件对象是一个对象,它使我们可以工作并与Python程序中的现有文件进行交互。

文件对象具有属性,例如:name:文件名。 已关闭:True如果文件已关闭。False除此以外。 mode:用于打开文件的模式。

例如:

现在,让我们看看如何通过文件对象访问文件的内容。

读取文件的方法

为了使我们能够处理文件对象,我们需要一种在程序中与它们“交互”的方法,而这正是方法的作用。让我们来看一些。

读()

你需要了解的第一种方法是read(), 它以字符串形式返回文件的全部内容。

这里有一个例子:

输出为:

你可以使用该type()函数来确认返回的值f.read()是一个字符串:

是的,这是一个字符串!在这种情况下,将打印整个文件,因为我们没有指定最大字节数,但是我们也可以这样做。 这里有一个例子:

返回的值限于以下字节数:

重要说明:您需要在任务完成后关闭文件以释放与该文件关联的资源。为此,您需要close()像下面这样调用方法:

Readline()与Readlines()

你可以使用这两种方法逐行读取文件。它们略有不同,因此让我们详细了解它们。readline()读取文件的一行,直到到达该行的末尾。尾随换行符(\n)保留在字符串中。 提示:(可选)你可以传递大小,即要包含在结果字符串中的最大字符数。

例如:

输出为:

这是文件的第一行。相反,readlines()返回一个列表,其中文件的所有行均作为单独的元素(字符串)。这是语法:

例如:

输出为:

请注意,\n每个字符串的末尾都有一个(换行符),最后一个除外。提示:你可以使用获得相同的列表list(f)。 你可以在程序中使用此列表,方法是将其分配给变量或在循环中使用它:

我们还可以在循环中f直接迭代(文件对象):

这些是用于读取文件对象的主要方法。现在让我们看看如何创建文件。

如何建立档案

如果需要使用Python“动态”创建文件,则可以使用"x"模式进行操作。让我们看看如何。这是基本语法:

这是一个例子。这是我当前的工作目录:

如果我运行以下代码:

在这种模式下,你可以创建文件,然后使用稍后会学到的方法来动态写入文件。 提示:该文件最初将为空,直到你对其进行修改。 奇怪的是,如果你尝试再次运行此行并且该名称的文件已经存在,则会看到此错误:

根据Python文档,此异常(运行时错误)为:在尝试创建已经存在的文件或目录时引发。 现在你已经知道如何创建文件,让我们看看如何对其进行修改。

如何修改文件

要修改(写入)文件,你需要使用write()方法。你有两种选择打开方式的方式(追加或写入)。让我们详细了解它们。

附加

“附加”是指在另一事物的末尾添加事物。该"a"模式允许你打开文件以向其中添加一些内容。例如,如果我们有此文件:

然后,我们要向其添加新行,我们可以使用"a"模式(追加)将其打开,然后调用该write()方法,并传递要添加的内容作为参数。这是调用该write() 方法的基本语法:

这是一个例子:

提示:请注意,我加入\n前行,以表明我希望新线显示为一个单独的行,而不是现有生产线的延续。 运行脚本后,现在是文件:

提示:在运行之前,新行可能不会显示在文件中。 f.close()

有时,你可能希望删除文件的内容,然后将其完全替换为新内容。write()如果使用"w"模式打开文件,则可以使用方法执行此操作。这里有这个文本文件:

如果我运行此脚本:

结果如下:

如你所见,使用"w"模式打开文件,然后对其进行写入将替换现有内容。 提示:该write()方法返回写入的字符数。 如果要一次写几行,则可以使用该writelines()方法,该方法需要一个字符串列表。每个字符串代表要添加到文件的一行。 这是一个例子。这是初始文件:

如果我们运行此脚本:

这些行将添加到文件末尾:

打开文件进行多种操作

现在,你知道了如何创建,读取和写入文件,但是如果您想在同一程序中做多个事情怎么办?让我们看看如果我们尝试使用到目前为止所学的模式来执行此操作,将会发生什么:

如果你以"r"模式(读取)打开文件,然后尝试对其进行写入:

你将收到此错误:

"a"(追加)模式也会发生同样的情况。我们该如何解决呢?为了能够在同一程序中读取文件并执行其他操作,需要将"+"符号添加到模式中,如下所示:

非常有用,对吧?这可能是你将在程序中使用的方式,但是请确保仅包括避免潜在错误所需的模式。有时不再需要文件。让我们看看如何使用Python删除文件。


如何删除文件

要使用Python删除文件,你需要导入名为的模块os,其中包含与操作系统交互的函数。提示:甲模块是与相关的变量,函数和类Python文件。 特别是,你需要该remove() 功能。此函数将文件路径作为参数,并自动删除文件。

让我们来看一个例子。我们要删除名为的文件sample_file.txt。

为此,我们编写以下代码:

第一行:import os称为“导入语句”。该语句写在文件的顶部,它使您可以访问os模块中定义的功能。第二行:os.remove("sample_file.txt")删除指定的文件。 提示:你可以使用绝对路径或相对路径。 现在,你知道如何删除文件,让我们来看一个有趣的工具:上下文管理器!

上下文管理器

上下文管理器是Python构造,可以使你的生活更加轻松。通过使用它们,你无需记住在程序结束时关闭文件,并且可以访问所选程序的特定部分中的文件。

句法

这是用于处理文件的上下文管理器的示例:

提示:上下文管理的身体已经被缩进,就像我们缩进循环,函数和类。如果代码没有缩进,则不会被视为上下文管理器的一部分。上下文管理器的主体完成后,文件将自动关闭。

例,这是一个例子:

该上下文管理器打开names.txt文件以进行读/写操作,并将该文件对象分配给变量f。在上下文管理器的主体中使用此变量来引用文件对象。

尝试再次阅读

正文完成后,文件将自动关闭,因此如果不重新打开文件就无法读取。可是等等!我们在下面的一行中尝试再次读取它:

让我们看看发生了什么:

引发此错误,因为我们正在尝试读取已关闭的文件。太好了吧?上下文管理器为我们完成了所有繁重的工作,它可读且简洁。

处理文件时如何处理异常

使用文件时,可能会发生错误。有时您可能没有修改或访问文件所需的权限,或者甚至可能不存在文件。作为程序员,您需要预见这些情况并在程序中进行处理,以避免突然崩溃,这肯定会影响用户体验。让我们看看使用文件时可能会发现的一些最常见的异常(运行时错误):

FileNotFoundError

根据Python文档,此异常是:在请求文件或目录但不存在时引发。 例如,如果您要打开的文件在当前工作目录中不存在:

你将看到此错误:

让我们逐行细分此错误:

File "<path>", line 8, in <module>。此行告诉你,当位于中的文件上的代码<path>运行时,引发了错误。具体来说,在line 8中执行的时间<module>。

f = open("names.txt")。这是导致错误的行。

FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'。这行说发生了FileNotFoundError异常,因为文件或目录names.txt不存在。提示: Python对错误消息的描述非常正确,对吗?这是调试过程中的巨大优势。

PermissionError

这是处理文件时的另一个常见例外。根据Python文档,此异常是:尝试在没有足够访问权限的情况下运行操作时引发,例如文件系统权限。 当你尝试读取或修改没有访问权限的文件时,会引发此异常。如果尝试这样做,你将看到此错误:

IsADirectoryError

根据Python文档,此异常是:

在目录上请求文件操作时引发。

当您尝试打开目录或使用目录而不是文件时,会引发此特殊异常,因此请务必小心作为参数传递的路径。

如何处理异常

要处理这些异常,可以使用try / except语句。使用此语句,您可以“告诉”您的程序万一发生意外情况该怎么做。这是基本语法:

在这里,你可以看到一个示例FileNotFoundError:

这基本上是说:尝试打开文件names.txt。 如果FileNotFoundError抛出a,请不要崩溃!只需为用户打印描述性声明即可。

提示:你可以通过在except块中编写适当的代码来选择如何处理这种情况。也许你可以创建一个新文件(如果尚不存在)。要在任务完成后自动关闭文件(无论是否在try块中引发了异常),都可以添加该finally块。

这是一个例子:

自定义try / except / finally语句的方法有很多,甚至else只有在该try块中没有引发异常的情况下,你甚至可以添加一个块来运行代码块。

综上所述

  1. 你可以使用Python创建,读取,写入和删除文件。
  2. 文件对象具有自己的一组方法,可在程序中使用它们。
  3. 上下文管理器可帮助你处理文件并通过在任务完成后自动将其关闭来管理文件。
  4. 异常处理是Python中的关键。当你使用文件的常见异常包括FileNotFoundError,PermissionError和IsADirectoryError。可以使用try / except / else / finally处理它们。

相关推荐

每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!

在日常开发中,时间处理是绕不开的一块,比如:生成时间戳比较两个时间差转换为可读格式接口传参/前端展示/日志记录今天我们就用一个案例+代码+思维导图,带你完全搞定datetime模块的用法!...

字节跳动!2023全套Python入门笔记合集

学完python出来,已经工作3年啦,最近有很多小伙伴问我,学习python有什么用其实能做的有很多可以提高工作效率增强逻辑思维还能做爬虫网站数据分析等等!!最近也是整理了很多适合零基...

为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图

前言Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。然而,设置数据、参数、图形和绘图在每次执行新项目时都可能变得非常混乱和繁琐。而且由于应用不同,我们不知道选择哪一个图...

Python新手必看!30分钟搞懂break/continue(附5个实战案例)

一、跳转语句的使命当程序需要提前结束循环或跳过特定迭代时,break和continue就是你的代码急刹按钮和跳步指令。就像在迷宫探险中:break=发现出口立即离开continue=跳过陷阱继续前进二...

刘心向学(24)Python中的数据类(python中5种简单的数据类型)

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(24)Python中的数据类”欢迎您的访问。Shareinterest,...

刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(25)Python中的虚拟环境”欢迎您的访问。Shareinte...

栋察宇宙(八):Python 中的 wordcloud 库学习介绍

分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python中的wordcloud库学习介绍”欢迎您的访问!Sharethefun,...

AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图

机器之能报道编辑:Cardinal以大模型、AIGC为代表的人工智能浪潮已经在悄然改变着我们生活及工作方式,但绝大部分人依然不知道该如何使用。因此,我们推出了「AI在用」专栏,通过直观、有趣且简洁的人...

使用DeepSeek + Python开发AI思维导图应用,非常强!

最近基于Deepseek+PythonWeb技术开发了一个AI对话自动生成思维导图的应用,用来展示下如何基于低门槛的Python相关技术栈,高效结合deepseek实现从应用场景到实际应用的快速落地...

10幅思维导图告诉你 - Python 核心知识体系

首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程;接着,结合这些思维导图主要参考的...

Python基础核心思维导图,让你轻松入门

Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...

Python基础核心思维导图,学会事半功倍

Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...

硬核!288页Python核心知识笔记(附思维导图,建议收藏)

今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...

Python学习知识思维导图(高效学习)

Python学习知识思维导图python基础知识python数据类型条件循环列表元组字典集合字符串序列函数面向对象编程模块错误异常文件对象#python##python自学##编程#...

别找了!288页Python核心知识笔记(附思维导图,建议收藏)

今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...

取消回复欢迎 发表评论: