Page cover

文件和目录访问


文件

文件是数据的抽象和集合

  • 文件是存储在辅助存储器上的数据序列

  • 文件是数据存储的一种形式

  • 文件展现形态:文本文件和二进制文件

文本文件 vs. 二进制文件

  • 文件文件和二进制文件只是文件的展示方式

  • 本质上,所有文件都是二进制形式存储

  • 形式上,所有文件采用两种方式展示

文本文件

  • 由单一特定编码组成的文件,如UTF-8编码

  • 由于存在编码,也被看成是存储着的长字符串

  • 适用于例如:.txt文件、.py文件等

二进制文件

  • 直接由比特0和1组成,没有统一字符编码

  • 一般存在二进制0和1的组织结构,即文件格式

  • 适用于例如:.png文件、.avi文件等

img

基本使用

文件打开和关闭

基本使用

打开模式

文件的打开模式
描述

'r'

只读模式,默认值,如果文件不存在,返回FileNotFoundError

'w'

覆盖写模式,文件不存在则创建,存在则完全覆盖

'x'

创建写模式,文件不存在则创建,存在则返回FileExistsError

'a'

追加写模式,文件不存在则创建,存在则在文件最后追加内容

'b'

二进制文件模式

't'

文本文件模式,默认值

'+'

与r/w/x/a一同使用,在原功能基础上增加同时读写功能

img

示例

文件内容的读取

数据的文件写入

File对象的属性

属性
描述

file.closed

返回true如果文件已被关闭,否则返回false。

file.mode

返回被打开文件的访问模式。

file.name

返回文件的名称。

file.softspace

如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

高阶使用

临时文件和目录

一日一技:在Python中创建临时文件用于记录临时数据

tempfile --- 生成临时文件和目录

当我们在做数据分析的时候,可能会由于数据量过大导致内存不足。如果我们没有条件使用更高配置的电脑,也没有办法优化数据,那么我们可以先把计算的中间值存放在一个文本文件中。 这种方案虽然有效,但是中间数据写成的临时文件如果不清理,时间一长就会占用大量硬盘空间。当然你也可以每一次都覆盖临时文件,这样它虽然不会堆积,但当你的分析程序已经停止的时候,临时文件还在硬盘上占用空间。

tempfile 模块专门用于创建临时文件和临时目录

既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好

入门示例

由于临时文件被关闭就会被删除,所以需要实现同时读写文件,因此文件模式为 w+t

使用 TemporaryFile,你没法知道这个临时文件叫做什么名字。

如果你想知道文件名,甚至想让另一个程序打开这个临时文件,那么你可以使用 NamedTemporaryFile

只要这个临时文件还没有被关闭,那么另一个程序就可以读取这个临时文件

常用的函数

tempfile 模块函数
功能描述

tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)

创建临时文件。返回一个类文件对象,也就是支持文件 I/O

tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True)

创建临时文件。功能与上一个函数的功能大致相同,只是它生成的临时文件在文件系统中有文件名

tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)

创建临时文件。与 TemporaryFile 函数相比,当程序向该临时文件输出数据时,会先输出到内存中,直到超过 max_size 才会真正输出到物理磁盘中。

tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)

生成临时目录

tempfile.gettempdir()

获取系统的临时目录

tempfile.gettempdirb()

与 gettempdir() 相同,只是该函数返回字节串

tempfile.gettempprefix()

返回用于生成临时文件的前缀名

tempfile.gettempprefixb()

与 gettempprefix() 相同,只是该函数返回字节串

提示:表中有些函数包含很多参数,但这些参数都具有自己的默认值

因此如果没有特殊要求,可以不对其传参

tempfile 模块还提供了 tempfile.mkstemp()tempfile.mkdtemp() 两个低级别的函数

上面介绍的 4 个用于创建临时文件和临时目录的函数都是高级别的函数,高级别的函数支持自动清理,而且可以与 with 语句一起使用

而这两个低级别的函数则不支持,因此一般推荐使用高级别的函数来创建临时文件和临时目录 此外,tempfile 模块还提供了 tempfile.tempdir 属性,通过对该属性赋值可以改变系统的临时目录

数据解压缩

gzip 格式

读取压缩文件示例:

创建GZIP 文件示例:

使用 GZIP 压缩已有的文件示例:

使用 GZIP 压缩二进制字符串示例:

ZIP格式

tar格式

如何将整个 tar 归档提取到当前工作目录:

如何通过 TarFile.extractall() 使用生成器函数而非列表来提取一个 tar 归档的子集:

如何基于一个文件名列表创建未压缩的 tar 归档:

使用 with 语句的同一个示例:

如何读取一个 gzip 压缩的 tar 归档并显示一些成员信息:

如何创建一个归档并使用 TarFile.add() 中的 filter 形参来重置用户信息:

os库

基本概念

os库提供通用的、基本的操作系统交互功能,是Python标准库

包含几百个函数,常用路径操作、进程管理、环境参数等几类

  • 路径操作:os.path子库,处理文件路径及信息

  • 进程管理:启动系统中其他程序

  • 环境参数:获得系统软硬件信息等环境参数

path子库

导入

文件操作

判断是否是文件 filepath最后没有/ 默认取//

判断两个路径都指向相同的文件或目录

增删文件[夹]

创建文件夹

删除文件夹

删除文件

目录遍历

python中os.walk的用法详解

列出目录下的所有子目录

列出目录下的所有文件

分割文件目录/文件名和后缀

目录操作

修改目录名称

返回当前程序与文件之间的相对路径 (relative path)

返回 path 的大小,以字节为单位,该文件不存在或不可访问时,抛出 OSError 异常

返回序列 paths 中每个路径名称的最长共同有效子路径

高阶文件操作

复制和删除

复制文件[夹]

移动文件[夹]

返回路径和最后一个文件名组成的元组

磁盘使用统计

磁盘使用统计数据,形式为一个 named tuple,其中包含 total, usedfree 属性

分别表示总计、已使用和未使用空间的字节数。

在 Windows 上,path 必须是一个目录;在 Unix 上,它可以是一个文件或一个目录

os库之环境参数

获取或改变系统环境信息

获取操作系统环境信息

获取操作系统环境信息

其他使用

os库之进程管理

查看剩余空间大小(ubuntu)

最后更新于

这有帮助吗?