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

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

off999 2024-10-04 00:20 37 浏览 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处理它们。

相关推荐

电脑网络正常但是上不了网(网络正常但电脑无法上网)

分析如下1、首先检查网卡的问题,打开电脑后,打开电脑右下角的WiFi连接,然后从里面的网络和共享中心检查,打开网络和共享中心后,出现对话框,在对话框左侧上方找到更改适配器设置,单击左键打开,就可以发现...

vs2008安装包下载(vs2008下载官方下载)

vs2008是面向WindowsVista、Office2007、Web2.0的下一代开发工具,VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用V...

怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
  • 怎么换系统win7(怎么换系统盘固态硬盘)
cad2018序列号(cad2018序列码)

AutoCAD2018序列号和密钥:序列号:356-72378422,666-69696969,667-98989898,400-45454545,066-66666666等密钥:001J1CA...

恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
  • 恢复出厂设置win7(恢复出厂设置win11)
ip检测网站(ip地址测试)

IP检测工具(IPNetChecker)V1.5.2是一个简易实用,功能强大的网络监控软件,使您可以检查互联网和局域网上的IP主机的网络状态。IP检测工具(IPNetChecker)V1.5....

云电脑app哪个好(手机云电脑app哪个最好)

答:以下是一些比较好的云电脑应用程序推荐:1.AnyDesk-支持Windows、MacOS、Linux、Android和iOS,可用于远程访问和控制PC或移动设备。2.Splashtop...

怎样注册邮箱163免费(怎样注册邮箱163免费账号)

一、工具:电脑(联网)、浏览器二、操作步骤:【1】打开浏览器,找到“163邮箱”,点击。【2】点击右边的“注册”。【3】网站默认注册手机号码邮箱,填写信息,点击“注册”。若不想泄漏手机号码或不想使用手...

微软surface pro 6(微软surface pro 6可以扩容吗)

SurfacePro6的接口包含:1个标准尺寸USB3.0端口,3.5mm耳机插孔,MiniDisplayPort,1个SurfaceConnect端口,Surface专业键盘盖端口,microSDX...

电源已接通未充电怎么回事(电源已接通未充电 真正解决办法)

原因分析:出现这样的原因有可能是长时间没有充电,导致电池的内部电量耗完后亏电严重,只是电脑充电的保护,不让过充而已,只要设置一下电池选项一般就可以解决问题了。解决方法:1、关机,拔下电源,拔出电池,...

华为云会议app下载(华为云会议下载)

 华为云会议可以在PC客户端或者手机客户端上一键发起立即会议,1秒创会。然后在会中选择企业通讯录中的人加入,系统会自动呼叫这些与会人,接听后即加入会议。ZOOM是一个云会议服务平台,为客户提...

路由器重置方法(路由器重置方法详细步骤)

路由器靠近WAN口边上的有一个小孔用于路由器的重置,路由器配置完成后,我们可能会忘记他的用户名或者是密码,那么我们可以把它恢复到出厂设置,再靠近万口或电源之间,有一个小孔,用一个尖锐的金属查一下大约五...

100个有效qq号以及密码(有效qq号和密码大全)

如果你的电脑知识好的话,不妨用一些复合密码!SHIFT+一些特殊符号,字母,数字!虽然麻烦了点,但总比被人盗号了的好,是吧!最好还用手机绑定一下,这样的话方便改密码也不怕QQ被盗了哦。。。QQ密码找回...

win10家庭中文版下载官网(windows10家庭中文版下载)

你好,激活Win10家庭中文版的方法:1.购买正版Win10家庭中文版激活码,然后在计算机上输入激活码,即可完成激活。2.如果您已经安装了Win10家庭中文版,但尚未激活,可以通过以下步骤激活:-...

电脑截图在哪里找(电脑截图在哪里找图片win10)

截图默认会保存在电脑的剪贴板中,可以通过以下步骤将其保存到本地:1.打开任意一款图片软件,如Paint、Photoshop、Word等。2.按下键盘上的Ctrl+V,或者在软件菜单栏中选择&#...

取消回复欢迎 发表评论: