【python标准库】os模块整理

文章目录

      • 成员变量和无参函数
      • 常用单参函数
      • 与复制移动重命名相关的函数
      • os.path
      • 文件描述符操作
      • 进程管理
      • stat_result

os,即操作系统,os模块提供一些与操作系统交互的接口,是一个非常强大的内置包。由于其内容过多,很大一部分功能我也没用过,如有纰漏之处还望指出,在此谢过。

成员变量和无参函数

(返回)类型 成员变量
os.name 字符串 操作系统名称,取值为posix, nt, java
分别代表当前系统为Linux, Windows, java虚拟机
os.environ 字典 当前系统环境变量的键值对
getcwd() 字符串 返回当前工作目录(get the current working directory)
getcwdb() 字节串 返回当前工作目录
os.getpid() int 返回当前进程ID
os.getppid() int 返回父进程ID
os.abort() 取消当前进程
os.getlogin() 返回当前用户
os.cpu_count() int 返回CPU数目

supports_常量

均与操作系统(OS)相关,除supports_bytes_environ外均为集合,下面为其在Windows中的值。

>>> os.supports_bytes_environ
False   #若OS上原生环境类型是字节型则为True
>>> os.supports_effective_ids
set()   #若当前平台支持effective_ids,则返回os.access()
>>> os.supports_fd  #返回支持文件描述符的函数
{<built-in function stat>, <built-in function truncate>}
>>> os.supports_dir_fd #返回支持dir_fd的函数
set()  
>>> os.supports_follow_symlinks #返回follow_symlinks可为False的函数集合
{<built-in function stat>}

常用单参函数

输入 输出
listdir 目录路径 输入路径的子路径构成的list
默认输入为当前的工作路径
scandir 目录路径 输入路径的子路径构成的迭代器
walk 目录路径 输入路径的子路径构成的迭代器
mkdir 目录路径 创建一个新的文件夹
该文件夹的父级目录必须已经存在
makedir 目录路径 递归创建新文件夹
remove 文件路径 删除文件
rmdir 目录路径 删除文件夹,文件夹下不得有子文件夹
removedirs 目录路径 递归删除文件夹
chdir 目录路径 改变当前工作路径
add_dll_director 路径 路径添加到DLL搜索路径
get_exec_path 路径 返回用于搜索可执行文件的目录列表
为No,将使用environ
fspath 路径 返回路径的文件系统表示。

与复制移动重命名相关的函数

os.rename(src,dst),路径重命名,将src重命名为dst。如果srcdst在不同的目录下,则会进行剪切粘贴。这个操作逻辑和命令行是一致的。

os.renames(src,dst),可创建中间路径的重命名,即递归重命名。

os包中,makedirs, renames还有removedirs这三个s结尾的文件操作函数,都属于递归性质的路径操作。其中mkdirs, renames允许目标路径的中间路径不存在;removedirs允许删除包含子路径的路径。

>>> os.mkdir(r'test\test')  #由于.\test不存在,所以会报错
Traceback (most recent call last):
  File "", line 1, in <module>
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'test\\test'
>>> os.makedirs(r'test\test')

os.replace顾名思义即替换,相当先删除,再重命名,os.replace('1.txt','2.txt')等价为

os.remove('2.txt')
os.rename('1.txt','2.txt')

os.path

查看源码会看到,在os.py中有这样几行

if 'posix' in _names:
    name = 'posix'
    linesep = '\n'
    from posix import *
    #省略若干代码

elif 'nt' in _names:
    from nt import *
    try:
        from nt import _exit
        __all__.append('_exit')
    except ImportError:
        pass
    import ntpath as path
    #。。。

该子模块的内容相对来说用得比较多,此前曾经总结过:os.path详解

文件描述符操作

关于open和文件类的内容放在了基础功能->文件读写部分,在此讲解部分函数的作用。

fd为文件描述符,一般是正整数,用于链接某个打开的文件。

输入为fd的单参函数
close 关闭fd
device_encoding 如果连接到终端,则返回fd对应的设备,否则返回None
fdatasync 强制写入fd
fstat 获取fd的状态
fstatvfs 返回文件的系统信息(Winows无)
get_blocking 获取文件的阻塞模式(Windows无)

最常用的应该是os.write(fd,str),将字符串str写入fd

copy_file_range(src,dst,count,offset_src=None,offset_dst):从src复制count到dst,offset可设置对应的偏移量

|closerange(fd_L,fd_H)|关闭从fd_Lfd_H之间的所有文件

Windows中没有的:

  • fchmod(fd, mode):将fd的权限修改为mode
  • fchown(fd, uid, gid):将fd的所有者和组ID改为uid和gid。

fdopenopen相似,区别在于其第一个参数为整数。关于open以及更多python文件读写功能的操作,请移步:【python标准库】最深入的文件读写详解。

进程管理

os模块中封装了一个非常有用的函数,即os.system,实现了一个非常强大的功能——将字符串转化为命令行的命令。

>>> import os
>>> os.system('tree')       #tree,输出当前路径下的树状图
卷 文档 的文件夹 PATH 列表
卷序列号为 76C2-48F3
E:.
└─__pycache__
0
>>> os.system('calc')   #系统打开了计算器
0

system相对的应该是kill(sig,pid),其功能为杀死某个进程,其功能为将一个信号sig发送给某个进程pid

此外,get_terminal_size可返回命令行窗口的尺寸。

os.exec

这些函数用于执行一个新的程序,根据其传入参数数据类型的不同可分为两类,分别是lv,前者输入为多个参数,后者输入为多个参数组成的元组。

例如os.execl(pro,c1,c2,...cN)等价于os.execv(pro,(c1,c2,...cN))

execl execle execlp execlpe
execv execve execvp execvpe

后缀e表示执行命令时,读取特定的环境变量作为默认环境。故以execv为例,其输入参数为os.execv(pro,tup,env),其中tup表示由各参数组成的元组。

后缀p表示在执行命令时,使用系统环境变量path中的路径来查找命令。

stat_result

此为状态对象,主要作为 os.stat()、os.fstat() 和 os.lstat() 的返回值,其常用属性主要包括

st_mode 文件模式:包括文件类型和文件模式位(即权限位)。
st_ino Unix上表示索引节点号
Windows上表示文件索引号
st_dev 设备标识符
st_nlink 硬链接数量
st_uid 文件所有者的用户 ID。
st_gid 文件所有者的用户组 ID。
st_size 文件大小
st_blocks 字节块数,每块512字节。文件稀疏时,可能小于st_size/512。
st_blksize 首选 块大小,用于提高文件系统 I/O 效率。
st_rdev 设备类型(如果是 inode 设备)。
st_flags 用户定义的文件标志位。

与时间相关

访问时间 修改时间 元数据更改时间(Unix)
创建时间(Windows)
秒单位 st_atime st_mtime st_ctime
纳秒单位 st_atime_ns st_mtime_ns st_ctime_ns

你可能感兴趣的:(#,Python标准库,python,后端,python标准库,os,操作系统)