主要介绍
pathlib
和os
/os.path
两个Python标准库.
1. os / os.path
2. pathlib
pathlib — 面向对象的文件系统路径处理库.
导入模块主要类
>>> from pathlib import Path, PurePath
3. 对照关联表
下表是 os
/os.path
和 pathlib
的功能对应关系表。(未完待续…)
function | os or os.path | pathlib |
---|---|---|
检验权限模式 | os.access() | |
改变当前工作目录 | os.chdir() | |
设置路径的标记为数字标记 | os.chflags() | |
更改权限 | os.chmod() | Path.chmod() |
更改文件所有者 | os.chown() | |
改变当前进程的根目录 | os.chroot() | |
关闭文件描述符 fd | os.close() | |
关闭所有文件描述符 | os.closerange() | |
复制文件描述符 fd | os.dup(fd) | |
将一个文件描述符 fd 复制到另一个 fd2 | os.dup2(fd, fd2) | |
通过文件描述符改变当前工作目录 | os.fchdir(fd) | |
改变一个文件的访问权限 | os.fchmod(fd, mode) | |
修改一个文件的所有权 | os.fchown(fd, uid, gid) | |
强制将文件写入磁盘 | os.fdatasync(fd) | |
通过文件描述符创建一个文件对象 | os.fdopen() | |
返回一个打开的文件的系统配置信息 | os.fpathconf(fd, name) | |
返回文件描述符fd的状态 | os.fstat(fd) | |
返回包含文件描述符fd的文件的文件系统的信息 | os.fstatvfs(fd) | |
强制将文件描述符为fd的文件写入硬盘 | os.fsync(fd) | |
裁剪文件描述符fd对应的文件 | os.ftruncate(fd, length) | |
返回当前工作目录 | os.getcwd() | Path.cwd() |
返回一个当前工作目录的Unicode对象 | os.getcwdu() | |
判断与tty(-like)设备相连是否正确 | os.isatty(fd) | |
设置路径的标记为数字标记,但是没有软链接 | os.lchflags(path, flags) | |
修改连接文件权限 | os.lchmod(path, mode) | |
更改文件所有者,类似 chown,但是不追踪链接 | os.lchown(path, uid, gid) | |
创建硬链接,名为参数 dst,指向参数 src | os.link(src, dst) | |
返回path指定的文件夹包含的文件或文件夹的名字的列表 | os.listdir(path) | Path.iterdir() |
设置文件描述符 fd当前位置为pos, how方式修改 | os.lseek(fd, pos, how) | |
像stat(),但是没有软链接 | os.lstat(path) | |
从原始的设备号中提取设备major号码 | os.major(device) | |
递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹 | os.makedev(major, minor) | |
递归文件夹创建函数 | os.makedirs(path[, mode]) | |
从原始的设备号中提取设备minor号码 | os.minor(device) | |
创建文件夹 | os.mkdir() | Path.mkdir() |
创建命名管道,mode 为数字,默认为 0666 (八进制) | os.mkfifo(path[, mode]) | |
创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe) | os.mknod(filename[, mode=0600, device]) | |
打开一个文件,并且设置需要的打开选项,mode参数是可选的 | os.open(file, flags[, mode]) | |
打开一个新的伪终端对。返回 pty 和 tty的文件描述符 | os.openpty() | |
返回相关文件的系统配置信息 | os.pathconf(path, name) | |
创建一个管道. 返回一对文件描述符(r, w) 分别为读和写 | os.pipe() | |
从一个 command 打开一个管道 | os.popen(command[, mode[, bufsize]]) | |
从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串 | os.read(fd, n) | |
返回软链接所指向的文件 | os.readlink(path) | |
删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory | os.remove() | Path.unlink() |
递归删除目录 | os.removedirs(path) | |
Path.replace() | ||
重命名文件或目录 | os.rename() | Path.rename() |
递归地对目录进行更名,也可以对文件进行更名 | os.renames(old, new) | |
删除path指定的空目录,如果目录非空,则抛出一个OSError异常 | os.rmdir() | Path.rmdir() |
获取path指定的路径的信息,功能等同于C API中的stat()系统调用 | os.stat() | Path.stat(), Path.owner(), Path.group() |
决定stat_result是否以float对象显示时间戳 | os.stat_float_times([newvalue]) | |
获取指定路径的文件系统统计信息 | os.statvfs(path) | |
创建一个软链接 | os.symlink(src, dst) | |
返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组 | os.tcgetpgrp(fd) | |
设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg | os.tcsetpgrp(fd, pg) | |
返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常 | os.ttyname(fd) | |
删除文件路径 | os.unlink(path) | Path.unlink() |
返回指定的path文件的访问和修改的时间 | os.utime(path, times) | |
输出在文件夹中的文件名通过在树中游走,向上或者向下 | os.walk() | Path.glob()、Path.rglob() |
写入字符串到文件描述符 fd中. 返回实际写入的字符串长度 | os.write(fd, str) | |
-------------------------------- | -------------------------------- | -------------------------------- |
返回绝对路径 | os.path.abspath() | Path.resolve() |
“a/b/c.d” => “c.d” | os.path.basename() | Path.name() |
返回list(多个路径)中,所有path共有的最长的路径 | os.path.commonprefix(list) | |
“a/b/c.d” => “a/b” | os.path.dirname() | PurePath.parent |
路径存在则返回True,路径损坏返回False | os.path.exists() | Path.exists() |
路径存在则返回True,路径损坏也返回True | os.path.lexists | |
把path中包含的"~“和”~user"转换成用户目录 | os.path.expanduser() | Path.expanduser() and Path.home() |
根据环境变量的值替换path中包含的"$name"和"${name}" | os.path.expandvars(path) | |
返回最近访问时间(浮点型秒数) | os.path.getatime(path) | |
返回最近文件修改时间 | os.path.getmtime(path) | |
返回文件 path 创建时间 | os.path.getctime(path) | |
os.path.getsize(path) | os.path.getsize(path) | |
判断是否为绝对路径 | os.path.isabs() | PurePath.is_absolute() |
判断路径是否为文件 | os.path.isfile() | Path.is_file() |
判断路径是否为目录 | os.path.isdir() | Path.is_dir() |
判断路径是否为链接 | os.path.islink() | Path.is_symlink() |
判断路径是否为挂载点 | os.path.ismount(path) | |
拼接路径 | os.path.join() | Path.joinpath() |
转换path的大小写和斜杠 | os.path.normcase(path) | |
规范path字符串形式 | os.path.normpath(path) | |
返回path的真实路径 | os.path.realpath(path) | |
从start开始计算相对路径 | os.path.relpath(path[, start]) | |
判断目录或文件是否相同 | os.path.samefile() | Path.samefile() |
判断fp1和fp2是否指向同一文件 | os.path.sameopenfile(fp1, fp2) | |
判断stat tuple stat1和stat2是否指向同一个文件 | os.path.samestat(stat1, stat2) | |
“a/b/c.d” => (“a/b”, “c.d”) | os.path.split(path) | |
一般用在 windows 下,返回驱动器名和路径组成的元组 | os.path.splitdrive(path) | |
“a/b/c.d” => (‘a/b/c’, ‘.d’) | os.path.splitext() | PurePath.suffix |
把路径分割为加载点与文件 | os.path.splitunc(path) | |
遍历path | os.path.walk() | |
设置是否支持unicode路径名 | os.path.supports_unicode_filenames() |