python系统模块os

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 "<stdin>", 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))

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
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值