一、简介
本模块提供了一种使用与操作系统相关的功能的便捷式途径
- 如果你只是想读写一个文件,请参阅 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 为空或以英文句点开头,且最多包含一个句点