11-文件IO、目录与文件管理

文件IO

在Python中,文件操作按以下顺序进行。

  1. 打开文件
  2. 读取或写入(执行操作)
  3. 关闭文件

打开文件

具有内置函数open()来打开文件。此函数返回文件对象,也称为句柄,因为它用于相应地读取或修改文件。

可以在打开文件时指定模式。在模式下,我们指定是要读取’r’,写入’w’还是追加’a’到文件。我们还指定是否要以文本模式或二进制模式打开文件。

默认设置是在文本模式下阅读。在这种模式下,当从文件中读取时,我们会得到字符串。

另一方面,二进制模式返回字节,这是处理非文本文件(如图像或exe文件)时要使用的模式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KWiB4xa-1683716724287)(null)]

关闭文件

完成对文件的操作后,我们需要正确关闭文件。

关闭文件将释放与该文件绑定的资源,并且使用close()方法完成 。

Python有一个垃圾收集器来清理未引用的对象,但是,我们绝对不能依靠它来关闭文件。

这种方法并不完全安全。如果对文件执行某些操作时发生异常,则代码将退出而不关闭文件。

一种更安全的方法是使用try … finally块。

这样,我们可以保证即使引发异常也可以正确关闭文件,从而导致程序流停止。

最好的方法是使用with语句。这样可以确保在with退出内部块时关闭文件。

我们不需要显式调用该close()方法。它是在内部完成的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2OgVgn5-1683716724358)(null)]

写入文件

可以以 ‘w’ 模式写入,'a’模式追加或独占创建’x’模式打开它。

我们需要谨慎使用该’w’模式,因为它会覆盖文件(如果已存在)。以前的所有数据都将被删除。

写入字符串或字节序列(对于二进制文件)是使用write()方法完成的。此方法返回写入文件的字符数。

读取文件

可以使用该read(size)方法读取大小数据。如果未指定size参数,它将读取并返回到文件末尾。

可以看到,read()方法将换行符返回为’\n’。到达文件末尾后,我们将在进一步阅读时得到空字符串。

我们可以使用seek()方法更改当前文件的光标(位置)。同样,tell()方法返回我们的当前位置(以字节数为单位)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sel2O4E2-1683716724394)(null)]

可以使用for循环逐行读取文件。这既高效又快速。

文件本身的行具有换行符’\n’。

此外,print()结束参数在打印时避免了两行换行。

或者,我们可以使用readline()方法读取文件的各个行。此方法读取文件,直到换行符为止,包括换行符。

最后,该readlines()方法返回整个文件的其余行的列表。当到达文件结尾(EOF)时,所有这些读取方法都将返回空值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kkuTa1Ya-1683716724300)(null)]

文件方法

目录与文件管理

如果您的Python程序中要处理大量文件,则可以将代码排列在不同的目录中,以使事情更易于管理。

目录或文件夹是文件和子目录的集合。Python具有os 模块,它为我们提供了许多使用目录(和文件)的有用方法。

获取目录

可以使用该getcwd()方法获取当前的工作目录。

此方法以字符串形式返回当前工作目录。我们还可以使用getcwdb()方法将其作为字节对象获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sdg59tPC-1683716724310)(null)]

更改目录

可以使用chdir()方法更改当前工作目录。

我们要更改的新路径必须作为字符串提供给此方法。我们可以使用正斜杠(/)或反斜杠(\)来分隔路径。

使用反斜杠时,用转义序列更安全。

列出目录和文件

使用listdir()方法可以知道目录内的所有文件和子目录。

此方法采用一个路径,并返回该路径中的子目录和文件的列表。如果未指定路径,它将从当前工作目录返回。

创建新目录

可以使用mkdir()方法创建一个新目录。

此方法采用新目录的路径。如果未指定完整路径,则会在当前工作目录中创建新目录。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I1JKkJmV-1683716724380)(null)]

重命名

rename()方法可以重命名目录或文件。

第一个参数是旧名称,而新名称必须作为第二个参数。

删除

使用remove()方法可以删除(删除)文件。

同样,rmdir()方法将删除一个空目录。

【但是,请注意rmdir()方法只能删除空目录】

为了删除一个非空目录,我们可以使用shutil模块内部的rmtree()方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnRJDySQ-1683716724334)(null)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且乐一杯酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值