【python标准库】os模块整理

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【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允许目标路径的中间路径不存在F1b;removedirs允许删除包含子路径的路径。

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

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))

execlexecleexeclpexeclpe
execvexecveexecvpexecvpe

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

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

stat_result

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

st_mode文件模式:包括文件类型和文件模式位(即权限位)。
st_inoUnix上表示索引节点号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_atimest_mtimest_ctime
纳秒单位st_atime_nsst_mtime_nsst_ctime_ns

脚本宝典总结

以上是脚本宝典为你收集整理的【python标准库】os模块整理全部内容,希望文章能够帮你解决【python标准库】os模块整理所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。