os库、shutil库、zipfile库、glob库和pathlib库的使用

一、“os” 是 Python 中内置的一个标准库,它提供了访问操作系统的功能。它可以完成一些基本的文件和目录管理任务,例如创建、删除、移动、复制、获取文件的属性等。它还可以执行一些系统级的任务,例如获取环境变量、修改工作目录、生成随机数等

part1.文件和目录的常用操作

  1. 获取当前工作目录:current_dir = os.getcwd(),不需要任何参数,python返回字符串

  2. 修改当前工作目录 os.chdir("/path/to/directory")

  3. 创建目录:os.mkdir("/path/to/directory"),在指定位置创建一个空目录(空文件夹),且只能创建一级目录。如果需要一次性创建多级目录,可以使用os.makedirs()函数

  4. 删除目录:os.rmdir("/path/to/directory")

  5. 获取文件属性:file_stats = os.stat("/path/to/file")

  6. 删除文件:os.remove("/path/to/file")

  7. 重命名文件: os.rename("/path/to/old_file", "/path/to/new_file")

part2.路径常用操作

        os.path模块 是Python 中处理路径信息的常用模块之一,作为os 模块的一个子模块,通常两者一起用来操作文件和目录。该模块提供了许多实用的功能,常用于获取路径的各种信息、属性;以及拼接路径、分割路径等操作。

1.绝对路径与相对路径
        在数据处理过程中,经常需要使用文件路径来读取、写入文件或者访问其他资源。Python 中的文件路径分为相对路径和绝对路径。了解路径,就一定要先了解正斜杠 '/' 和反斜杠 '\'。在 MacOS 和 Linux 系统下,路径默认使用的都是正斜杠'/',在Windows系统下,正反斜杠都可以表示路径分隔符,默认的是反斜杠 '\'。由于反斜杠本身属于转义符,如 '\n' 表示换行符、'\t' 表示横向制表符,这可能会导致使用反斜杠表示的路径在编码时无法被正确识别,如路径'D:\test',在 Python 中,'\test' 中的 '\t' 被识别为制表符,所以该路径无法被找到.

针对这种情况,通常有三种解决办法。

  • 在每个分隔符前加一个反斜杠,原理是先将转义字符转义,例如'D:\\test'。
  • 通过非转义的原始字符 'r',在路径字符串前添加 r,例如r'D:\test'。
  • 将路径字符串中所有的反斜杠 '\' 改为正斜杠 '/' ,例如'D:/test'。

        补充一点,在 Python 文件的相对路径中,最前面的'./'表示当前目录;'../'表示当前目录的上一级目录,可以用于获取父目录中的文件或目录。绝对路径指的是从根目录开始的完整路径,其不受当前工作目录的影响,始终指向相同的文件或目录。需要注意一点,在Windows系统中,文件和文件夹名称不区分大小写。

2'操作文件路径的函数
        os.path 模块中常用于处理路径字符串的函数如下表所示。


        os.path.split(path)函数可以将路径分割为两部分,第一部分为路径字符串最后一个分割符前面的内容,通常为路径目录(dirname),第二部分为路径最后一个分隔符后面的内容,通常为文件名(basename)。该函数返回的是一个二元组(dirname,basename),如果路径没有文件名部分,则返回的 basename 为空字符串。


        os.path.join(path1,...)函数用于拼接路径名,在拼接路径名时,我们不需要手动添加路径分隔符,该函数会依据不同的操作系统自动添加正确的路径分隔符(在Windows中为 '\',在Linux和MacOS中为 '/')。

        在实际中常见的一个路径操作是,先获取路径的一个部分,再将路径组合拼接为新的路径,
 os.path.join()函数常与os.path.split()等函数一起使用,通过后者解析路径中的目录或文件部分,使用前者进行动态的路径拼接,避免了手动添加文件路径中的分隔符,同时,在拼接路径名时,还可以使用相对路径或绝对路径,使得程序更加简洁明了。操作文件路径时,还有一个较常用的是os.path.abspath()函数,该函数可以将指定路径转化为绝对路径,这样的好处在于,能够确保访问的是文件的绝对路径,避免了由于相对路径与绝对路径不一致导致的错误,同时也避免了由于操作系统不同导致的路径表达方式不同。

3.获取文件和目录属性的函数

除了操作文件路径的函数,os.path 模块还提供了能够获取文件和目录的各种相关属性的函数,下表为其中常用的一些函数。

4.文件扩展名函数
        如本期引言中提到,我们在数据处理时会遇到一种场景,需要对指定文件夹中特定类型的文件进行处理,那么我们应该如何得到文件的类型呢?本节介绍os.path 模块中用于获取文件拓展名的os.path.splitext()函数。

        os.path.splitext(path)函数将路径分为文件名和拓展名两部分。参数 path 是要分割的路径字符串,函数返回值为一个二元组,位置一为文件名,位置二为文件的扩展名,如果该路径末尾没有拓展名,则元组的第二个元素为空字符串。这个函数的返回结果有助于我们找到指定类型的文件,比如,我们想要找到指定文件夹下的所有 PDF 文件,并将其路径保存在列表中。

Part3 文件和目录的遍历方法

在数据处理过程中,我们经常需要遍历一个目录下的所有文件或者子目录,并对其中的文件进行处理,如前文的例子,找到一个文件夹中所有满足要求的文件,这也是对文件进行处理的前提。os 模块中提供了多个函数用于实现文件和目录的遍历,常用的是os.listdir()函数和os.walk()函数。

1.os.listdir()函数

os.listdir(path)函数得到一个包含指定目录下所有文件和子目录名称的列表,其中,参数 path 为遍历的目录路径(如果不指定路径,默认为当前工作目录)。在上例中,为找到示例资源文件夹中所有的PDF文件,我们使用os.listdir(path)函数遍历,并将返回的列表赋值给变量all_files_name

2.os.walk()函数

os.walk()函数是一个递归式的遍历(递归遍历是指在遍历目录结构时,对每个子目录都进行一次遍历,从而达到遍历整个目录及其子目录的目的),用于遍历指定目录及其子目录中的所有文件和目录,其语法如下。

os.walk(top, topdown=True, onerror=None, followlinks=False)

其中,参数具体含义如下。

  • top 为要遍历的目录路径。返回的是一个三元组(dirpath,dirnames,filenames),dirpath 为当前遍历的目录树的目录路径,dirnames 为当前目录下所有子目录列表,filenames为当前目录下所有文件列表
  • topdown 为可选参数,为 True 时(默认)表示优先遍历 top目录,即 walk 会遍历 top 文件夹与其每一个子目录。否则会优先遍历 top 的子目录。
  • onerror 为可选的错误处理函数。
  • followlinks为可选参数,为 True 时表示会遍历目录下的快捷方式实际所指的目录,为 False 时(默认)表示优先遍历 top 的子目录。

当我们使用os.walk()函数时,它会从根目录开始遍历整个目录树,并且对于每个目录,都会返回一个三元组

获取目录下的所有文件

搜索文件

用 shutil 库复制、移动、删除目录及其内容

用 pathlib 库简化文件系统操作

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值