OS库及其常用函数

Programming · 2023-09-08

Brief intro

OS库全称Operating System,提供了与操作系统交互的各种函数。它是一个Python内置的自带库,能有有效提高在批量处理数据时对文件进行读写、重命名等操作时的效率。通过这个库,可以利用其中的函数调用计算机底层操作系统的部分功能来快速、高效地管理文件和目录。

路径、目录、文件、文件夹的区别

目录是一种文件系统中的特殊文件,它可以包含其他文件和目录,并提供一种组织和管理这些文件和目录的方式。在 Windows 操作系统中,目录也被称为文件夹。

路径是一个字符串,用于描述文件或文件夹在文件系统中的位置。路径可以是相对路径或绝对路径。相对路径是相对于当前工作目录的路径,而绝对路径则是从文件系统根目录开始的完整路径。

换句话说,目录是文件系统中的一个对象,可以包含其他文件和目录,而路径是描述文件或目录位置的字符串。因此,可以使用路径来指定要访问的文件或目录,而目录则是文件和目录的容器。

例如,在 Windows 操作系统中,C:\Documents\example.txt 是一个路径,其中 C:\Documents 是目录,example.txt 是文件名。在这个例子中,路径描述了文件 example.txt 的位置,而目录是文件 example.txt 所在的目录。

总的来说,目录是文件和目录的组织容器,而路径是用于描述文件和目录位置的字符串。

Implement

导入

import os

文件、目录常用操作

os.getcwd() # Get Current Direction 获取Python当前的工作路径
os.chdir() # change direction 将当前的工作路径更改为括号中的路径
os.rename(x,y) # 将指定路径的文件或目录x重命名为y
os.remove(x) # 删除指定路径的文件x,但x不能是一个目录
os.mkdir(x) # 创建指定路径的新目录x,但x不能是一个已存在的目录
os.rmdir(x) # 删除指定路径的空目录x,但x不能是一个非空目录

路径常用操作(os.path)

1. 相对路径和绝对路径

文件的读取、写入和访问等操作都需要通过文件路径来完成,python中的文件路径分为相对路径和绝对路径两种。在MacOS和Linux系统中,系统默认使用正斜杠"/"作为路径分隔符,而在Windows系统中,正反斜杠都可以表示路径分隔符,默认为反斜杠"\"。而反斜杠本身就对应了转义符,如"\n"表示换行,"\t"表示横向制表符,因此会导致路径中的反斜杠无法在Python中被正常识别,解决方法有三种:

  • 在每个分隔符的前面都再加一个反斜杠,将反斜杠进行转义,如"D:\\test"
  • 在路径的字符串前添加r,使得字符串不进行转义,如r"D:\test"
  • 将路径字符串中的反斜杠改写为正斜杠,如"D:/test"

相对路径指的是对于当前的工作目录来定位文件的路径。如当前工作目录为A,文件f位于当前工作目录下,则可以直接通过"f"或"./f"来访问该文件,其中"./"表示当前目录,"../"表示当前目录的上一级目录,可以用于获取父目录。

绝对路径指的是从根目录开始的完整路径。绝对路径不受到当前工作目录的影响,因为其需要将文件所在的位置进行完整的表述,如上述例子中f的绝对路径为"A/f"。

值得注意的是,在Windows系统中,文件夹的名称不区分大小写,而Linux中会区分。一般情况下,绝对路径适用于需要确切指定文件位置的场景,而相对路径则更适合当前程序与目标文件在同一个工作目录下的场景,路径会更短,更方便表述。

2. 路径操作常用函数

os.path.basename(path) # 返回路径的最后一项,通常是文件的名字
os.path.dirname(path) # 返回路径的目录部分
os.path.split(bath) # 分割路径,将path的目录部分和文件名部分拆开,返回一个二元组
os.path.join(path1, path2, ...) # 将若干个path整合成一个完整的路径,返回一个字符串
os.path.abspath(path) # 返回指定路径的绝对路径

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

os.path.isdir(path) # 判断指定路径是否为目录,返回Bool值
os.path.isfile(path) # 判断指定路径是否为文件
os.path.isabs(path) # 判断指定路径是否为绝对路径
os.path.exists(path) # 判断指定路径是否存在
os.path.getsize(path) # 获取指定路径(必须是文件)的大小,单位为字节
os.path.getctime(path) # 获取指定路径(文件或目录)的创建时间 create time
os.path.getmtime(path) # 获取指定路径(文件或目录)的修改时间 modification time

4. 文件拓展名函数

os.path.splitext(path) # 将指定路径分为文件名和拓展名两部分

5. 文件和目录遍历函数

os.listdir(path) # 获取指定路径(必须是目录)下的所有文件和子目录名称列表,返回list
(dirpath, dirnames, filenames) = os.walk(top, topdown = True, onerror = None, followlinks = False)
# top为需要遍历的指定路径,后面为可选参数,返回三元组,dirpath为当前遍历的目录树的目录路径,dirnames为当前目录下的所有子目录列表,filenames为当前目录下的所有文件列表