一、简介
本模块提供了一种使用与操作系统相关的功能的便捷式途径
- 如果你只是想读写一个文件,请参阅 open()
- 如果你想操作文件路径,请参阅 os.path 模块
- 如果你想读取通过命令行给出的所有文件中的所有行,请参阅 fileinput 模块
- 为了创建临时文件和目录,请参阅 tempfile 模块,对于高级文件和目录处理,请参阅 shutil 模块。
关于这些函数的适用性的说明
- Python中所有依赖于操作系统的内置模块的设计都是这样,只要不同的操作系统某一相同的功能可用,它就使用相同的接口。例如,函数 os.stat(path) 以相同的格式返回关于 path 的状态信息(该格式源于 POSIX 接口)
- 特定于某一操作系统的扩展通过操作 os 模块也是可用的,但是使用它们当然是对可移植性的一种威胁
- 所有接受路径或文件名的函数都同时支持字节串和字符串对象,并在返回路径或文件名时使用相应类型的对象作为结果。
- 在 VxWorks 系统上,os.fork, os.execv 和 os.spawnp 不被支持
二、文件操作
-
os.open(path, flags, mode=0o777): 打开文件, 并返回文件描述符(整数)
参数说明参数 含义 说明 path要打开文件的路径 1. 绝对路径
2. 相对路径flags打开文件的权限 
mode权限值 
-
os.fdopen(fd): 返回打开文件描述符 fd 对应文件的对象。类似内建open()函数, 有相同的参数 -
os.write(fd, str:bytes): 写入数据到文件, fd: 文件描述符, str: 写入到文件的字符串, 必须是bytes类型字符串 -
os.read(fd, n: int): 从文件中读取n个字节数据, fd: 文件描述符 -
os.close(fd): 关闭文件 -
os.lseek(fd, __position, __how): 移动文件指针, fd文件描述符,__position: 相对于__how偏移位置;__how: 文件指针的位置0文件开头1文件当前位置2文件末尾
import os
# 打开文件
fd = os.open("test.txt", os.O_RDWR)
file = os.fdopen(fd) # 打开为文件对象, 其与内建`open()`返回的文件对象操作一致
# 写入内容到文件
os.write(fd, b"hello world
")
# 读取文件中的内容 os.read(fd, n)
print(os.read(fd, 5))
# 关闭文件
os.close(fd)
三、获取系统信息
-
os.name: 操作系统的名称, posix: Unix/Linux, nt: Windows -
os.uname(): 获取操作系统的基本信息(Windows不可用) -
os.environ: 字典, 包含系统中的环境变量 -
os.stat(path): 返回path对应文件的状态
四、目录相关
4.1 os模块下目录的操作
-
os.listdir(path): 列出path目录下的 -
os.getcwd(): 获取当前工作目录 -
os.chdir(path): 修改工作目录为path -
os.mkdir(path): 创建目录path -
os.makedirs(path): 递归创建目录 -
os.rmdir(path): 删除空目录 -
os.rmdirs(path): 递归删除目录 -
os.rename(src,dst): 将src重命名为dst,des存在则会报错 -
os.renames(old, new): 递归将old重命名为new -
os.replace(src, dst): 将文件或目录src重命名为dst
4.2 os.path子模块下目录的操作
-
os.path.abspath(path):返回路径path的绝对路径 -
os.path.absename(path): 返回路径path的基本名称 -
os.path.commonpath(paths): 返回paths中最长的共同部分 -
os.path.commonprefix(list): 返回所有路径的最长公共前缀 -
os.path.dirname(path): 返回路径path的目录名称 -
os.path.exists(path): 判断目录或文件是否存在. -
os.path.getatime(path): 返回path的最后访问时间. 以时间戳表示 -
os.path.getmtime(path): 返回path的最后修改时间 -
os.path.getctime(path): 返回path的创时间 -
os.path.getsize(path): 返回path的大小, 字节为单位 -
os.path.isabs(path): 判断path是否为绝对路径 -
os.path.isfile(path): 判断path是否为常规文件, 会跟中链接文件 -
os.path.isdir(path): 判断path是否为目录 -
os.path.islink(path): 判断path是否为链接文件 -
os.path.ismount(path): 判断path是否为文件系统的挂载点 -
os.path.join(path, *paths): 合理地拼接一个或多个路径部分 -
os.path.normcase(path): 规范路径的大小写 -
os.path.normpath(path): 折叠多余的分隔符和对上级目录的引用来标准化路径名 -
os.path.realpath(path): 返回指定文件的规范路径,消除路径中存在的任何符号链接(如果操作系统支持) -
os.path.relpath(path, start=os.curdir): 返回从当前目录或 start 目录(可选)到达 path 之间要经过的相对路径 -
os.path.samefile(path1, path2): 判断两个路径是否指向同一个文件 -
os.path.sameopenfile(fp1, fp2): 判断两个文件描述符打开的是否为同一个文件 -
os.path.split(path): 将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空. -
os.path.splitdrive(path): 将路径 path 拆分为一对,即 (drive, tail),其中 drive 是挂载点或空字符串 -
os.path.splitext(path): 将路径 path 拆分为一对,即 (root, ext), 使 root + ext == path,其中 ext 为空或以英文句点开头,且最多包含一个句点