引言
在前面的博客中,小编带大家学习了os库中文件和目录操作相关功能中的os.path系列函数,今天,小编将带各位小可爱学习文件和目录操作功能中除os.path外的函数。
文件和目录操作功能都包括哪些函数?
文件和目录操作功能相关的函数除了(python—os库之os.path系列-优快云博客)和(python——os库之os.remove函数-优快云博客)这两篇博客中的内容,还包括以下函数表1中的函数:
功能 | 函数 | 作用 | 参数 |
文件和目录操作 | os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) | 检查当前用户是否有权访问指定的路径 | "path" 是要检查的文件或目录的路径。 "mode" 是一个表示访问模式的整数,可以是 "os.F_OK"(检查文件是否存在)、"os.R_OK"(检查读权限)、"os.W_OK"(检查写权限)和 "os.X_OK"(检查执行权限)的组合。 "dir_fd"、"effective_ids" 和 "follow_symlinks" 是可选参数,分别用于支持路径查找、检查真实用户/组ID,以及指定是否跟随符号链接。 |
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) | 更改指定路径的权限模式 | "path" 是要更改权限模式的文件或目录的路径。 - "mode" 是一个表示权限模式的整数,可以是 "os.R_OK"(读权限)、"os.W_OK"(写权限)和 "os.X_OK"(执行权限)的组合。 - "dir_fd" 和 "follow_symlinks" 是可选参数,分别用于支持路径查找和指定是否跟随符号链接。 | |
os.getcwdb() | 获取当前工作目录的字节对象 | 这个函数和 "os.getcwd()" 相似,但返回的是字节对象而不是字符串 | |
os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) | 创建指向同一文件的新文件名,即两个文件名指向文件系统中相同的数据块。链接 "src" 文件到 "dst" | "src" 和 "dst" 是源文件和目标文件的路径,分别表示硬链接的源文件和目标文件。 - "src_dir_fd"、"dst_dir_fd" 和 "follow_symlinks" 是可选参数,分别用于支持路径查找和指定是否跟随符号链接。 | |
os.listdir(path='.') | 返回的是一个列表,列出指定目录的所有文件和子目录 | "path" 是要列出文件和子目录的目录的路径。如果省略 "path" 参数或者设置为 "'.'",那么将列出当前工作目录的所有文件和子目录 | |
os.lstat(path, *, dir_fd=None) | 获取文件或目录的状态信息,和 "os.stat()" 函数类似,但如果 "path" 是一个符号链接,那么 "os.lstat()" 将返回符号链接本身的状态信息,而 "os.stat()" 将返回符号链接指向的文件的状态信息 | "path" 是要获取状态信息的文件或目录的路径。 - "dir_fd" 是可选参数,用于支持路径查找。 | |
os.mkdir(path, mode=0o777, *, dir_fd=None) | 创建目录 | "path" 是要创建的目录的路径。 - "mode" 是可选参数,用于设置新创建的目录的权限,默认为 "0o777"。 - "dir_fd" 是一个可选的文件描述符,用于支持路径查找。如果提供了这个参数,它应该是一个打开的目录的文件描述符。 | |
os.makedirs(name, mode=0o777, exist_ok=False) | 递归创建目录 | "name" 是要创建的目录的路径。 - "mode" 是可选参数,用于设置新创建的目录的权限,默认为 "0o777"。 - "exist_ok" 是可选参数,用于指定当目录已存在时是否抛出异常。如果 "exist_ok" 为 "False"(默认值),当目录已存在时,函数将抛出一个 "FileExistsError" 异常。如果 "exist_ok" 为 "True",当目录已存在时,函数不会做任何事情。 | |
os.removedirs(name) | 递归删除空目录。从指定的目录开始,逐级向上删除目录,直到遇到一个非空目录或根目录。如果指定的目录或其父目录非空,它们将不会被删除 | "name" 是要创建的目录的路径。 | |
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) | 重命名文件或目录 | "src" 是要重命名的源文件或目录的路径。 - "dst" 是新的文件或目录名称。 - "src_dir_fd" 和 "dst_dir_fd" 是可选的文件描述符,用于支持路径查找。如果提供了这些参数,它们应该是一个打开的目录的文件描述符 | |
os.renames(old, new) | 递归地重命名文件或目录 | "old" 是要重命名的源文件或目录的路径。 - "new" 是新的文件或目录路径 | |
os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) | 用于替换文件或目录。这个函数类似于 "os.rename()",但如果目标文件或目录已经存在,它不会失败,而是替换它 | "src" 是要替换的源文件或目录的路径。 - "dst" 是新的文件或目录名称。 - "src_dir_fd" 和 "dst_dir_fd" 是可选的文件描述符,用于支持路径查找。如果提供了这些参数,它们应该是一个打开的目录的文件描述符。 | |
os.rmdir(path, *, dir_fd=None) | 删除空目录 | "path" 是要删除的目录的路径。 - "dir_fd" 是一个可选的文件描述符,用于支持路径查找。如果提供了这个参数,它应该是一个打开的目录的文件描述符 | |
os.scandir(path='.') | 返回给定路径中所有条目的迭代器 | "path" 是要扫描的目录的路径 | |
os.stat(path, *, dir_fd=None, follow_symlinks=True) | 获取文件或目录的状态信息. 1. "st_mode":保护位,描述文件类型和文件模式位(权限)。 2. "st_ino":i节点号。 3. "st_dev":设备。 4. "st_nlink":链接数。 5. "st_uid":用户ID。 6. "st_gid":组ID。 7. "st_size":文件大小,以字节为单位。 8. "st_atime":最后访问时间。 9. "st_mtime":最后修改时间。 10. "st_ctime":在某些系统上(如Unix)是最新的元数据更改的时间,在其他系统上(如Windows)是创建时间 | "path" 是要获取状态信息的文件或目录的路径。 - "dir_fd" 是一个可选的文件描述符,用于支持路径查找。如果提供了这个参数,它应该是一个打开的目录的文件描述符。 - "follow_symlinks" 是一个可选参数,表示是否跟随符号链接。如果设为 "True"(默认值),那么在遇到符号链接时,将返回指向文件的状态信息。如果设为 "False",那么将返回符号链接本身的状态信息 | |
os.supports_fd | 表示操作系统支持哪些文件描述符相关的功能。包括:"os.open"、"os.read"、"os.write"、"os.close"、"os.dup"等。 | ||
os.supports_follow_symlinks | 表示操作系统支持哪些遵循符号链接的函数,包括:"os.chflags"、"os.lchflags"、"os.lchmod"等。 | ||
os.symlink(src, dst, target_is_directory=False, *, dir_fd=None) | 在文件系统中创建一个符号链接。符号链接是一个特殊类型的文件,它指向另一个文件或目录。当访问符号链接时,操作系统会将访问重定向到指向的文件或目录。 | "src" 是被链接文件或目录的路径。 - "dst" 是要创建的符号链接的路径。 - "target_is_directory" 是一个可选参数,表示目标是否是一个目录。如果设为 "True",那么将创建一个指向目录的符号链接。默认值是 "False"。 - "dir_fd" 是一个可选的文件描述符,用于支持路径查找。如果提供了这个参数,它应该是一个打开的目录的文件描述符。 | |
os.truncate(path, length) | 用于重设指定文件的大小。如果指定的新大小小于当前文件大小,那么文件将被截断,多余的部分将被删除。如果指定的新大小大于当前文件大小,那么文件将被扩展,新增的部分将被填充为空字节。 | "path" 是要重设大小的文件的路径。 - "length" 是文件的新大小,以字节为单位。 | |
os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True) | 改变指定文件的访问时间和修改时间 | "path" 是要改变时间的文件的路径。 - "times" 是一个可选参数,表示新的访问时间和修改时间。它应该是一个包含两个元素的元组,第一个元素是访问时间,第二个元素是修改时间,都以秒为单位。如果省略这个参数,或者设为 "None",那么访问时间和修改时间都将被设为当前时间。 - "ns" 是一个可选参数,表示新的访问时间和修改时间,以纳秒为单位。它应该是一个包含两个元素的元组,第一个元素是访问时间,第二个元素是修改时间。如果既提供了 "times" 又提供了 "ns",那么 "ns" 将被忽略。 - "dir_fd" 和 "follow_symlinks" 参数的含义与前面的函数相同。 | |
os.walk(top, topdown=True, οnerrοr=None, followlinks=False) | 遍历一个目录树。它生成一个三元组 "(dirpath, dirnames, filenames)" | "top" 是根目录下的每一个文件夹(包含它自己),产生3个元组,('目录路径','该路径下面的目录名','该路径下面的文件名')。 - "topdown" 是一个可选参数,表示遍历的顺序。如果设为 "True",那么先遍历顶层目录,然后遍历子目录(这是默认的行为)。如果设为 "False",那么先遍历子目录,然后遍历顶层目录。 - "onerror" 是一个可选参数,表示一个错误处理函数。如果提供了这个参数,那么当发生错误时,将调用这个函数。如果没有提供这个参数,那么将忽略错误。 - "followlinks" 是一个可选参数,表示是否遵循符号链接。如果设为 "True",那么将遍历符号链接指向的目录。默认值是 "False" |
代码如何实现?
各位小可爱可以通过以下代码加深对相关函数的理解,在开始具体操作前可以现在桌面建4个文件夹(如下图),其中page7和page8为空文件夹,其余两个文件夹可以随便放一些Excel、txt、png等文件。
# -*- coding: UTF-8 -*-
import os
path='C:\\Users\\Administrator\\Desktop\\page'
path2='C:\\Users\\Administrator\\Desktop\\page2'
path3='C:\\Users\\Administrator\\Desktop\\page2\\OS库.png'
path4='C:\\Users\\Administrator\\Desktop\\page3\\'#不存在的路径
path5='C:\\Users\\Administrator\\Desktop\\page4'#不存在的路径
path6='C:\\Users\\Administrator\\Desktop\\page5'
path7='C:\\Users\\Administrator\\Desktop\\page6'
path8='C:\\Users\\Administrator\\Desktop\\page7'
#print(os.access(path,os.F_OK,effective_ids=False))
#print(os.chmod(path,os.R_OK))
#print(os.getcwdb())
#print(os.link(path3,path4))#创建一个path4
#print(os.listdir(path))
#print(os.lstat(path))
#print(os.mkdir(path5))
#print(os.makedirs(path5))
#print(os.removedirs(path5))
#print(os.rename(path2,path6))
#print(os.renames(path,path6))
#print(os.replace(path,path6))
#print(os.rmdir(path7))
#print(os.scandir(path))
#print(os.stat(path))
#print(os.supports_fd)
#print(os.supports_follow_symlinks)
#print(os.truncate(path8,0))
#print(os.utime(path,times=None))
#print(os.walk(path,topdown=True))