os模块代表程序所在的操作系统,主要用于获取程序运行所在操作系统的信息。
首先在Python交互式解释器中导入os模块,然后输入os.__all__命令(__all__变量代表模块开放的公共接口),就可以看到模块包含的所有属性和函数。
此处仅介绍 os 模块中常用的属性和函数:
os.name:返回导入的依赖模块的操作系统名称,通常可以返回'posix'、'nt'、'java'等值之一。
os.environ:返回在当前系统上所有环境变量组成的字典。
os.fsencode(filename):该函数对类路径(path-like)的文件名进行编码。
os.fsdecode(filename):该函数对类路径(path-like)的文件名进行解码。
os.PathLike:这是一个类,代表一个类路径(path-like)对象。
os.getenv(key, default=None):获取指定环境变量的值。
os.getlogin():返回当前系统的登录用户名。与该函数对应的有os.getuid()、os.getgroups()、os.getgid()等函数,用于获取用户ID、用户组、组ID等,这些函数通常只在UNIX上有效系统。
os.getpid():获取当前进程 ID。
os.getppid():获取当前进程的父进程 ID。
os.putenv(key, value):该函数用于设置环境变量。
os.cpu_count():返回当前系统的 CPU 数量。
os.sep:返回路径分隔符。
os.pathsep:返回当前系统上多个路径之间的分隔符。一般Windows系统中多个路径之间的分隔符是英文分号(;);在 UNIX 和类 UNIX 系统(如 Linux、Mac os X)上,多个路径之间的分隔符是英文冒号 (:) 。
os.linesep:返回当前系统的换行符。 Windows系统的换行符一般是“\r\n”;在 UNIX 系统上,换行符是“\n”;在 Mac os X 系统上,换行符是“\r”。
os.urandom(size):返回一个字节对象,最多包含适合加密的 N 个字节。此函数通过特定于操作系统的随机源返回随机字节,这通常是不可预测的,因此适用于大多数加密方案。
下面程序示范了 os 模块的大部分函数的用法:
import os
# 显示导入依赖模块的操作系统的名称
print(os.name)
# 获取PYTHONPATH环境变量的值
print(os.getenv('PYTHONPATH'))
# 返回当前系统的登录用户名
print(os.getlogin())
# 获取当前进程ID
print(os.getpid())
# 获取当前进程的父进程ID
print(os.getppid())
# 返回当前系统的CPU数量
print(os.cpu_count())
# 返回路径分隔符
print(os.sep)
# 返回当前系统的路径分隔符
print(os.pathsep)
# 返回当前系统的换行符
print(os.linesep)
# 返回适合作为加密使用的、最多3个字节组成的bytes
print(os.urandom(3))
运行上面程序,可以看到如下输出结果:
nt
None
yeeku
9904
12036
8
\
;
b'\x12\x1e\xcf'
从上面的输出可以看出,Python在Windows系统上导入依赖模块的操作系统名称是“nt”;当前系统登录用户名为“yeeku”:当前进程号为“9904”;当前进程的父进程ID为“12036”;当前系统有8个CPU;当前系统(Windows)上的路径分隔符是“\”;当前系统(Windows)上多个路径之间的分隔符是分号(;);但换行符在当前系统 (Windows) 上不可见,因为当“\r\n”输出到控制台时只会产生两个空行。
此外,os模块还包含了大量的操作文件和目录的功能函数,本教程将在后续章节中具体介绍这些功能函数。
os模块下还包含各种进程管理功能,可用于启动新进程、终止现有进程等。 os模块下进程管理相关的函数如下:
os.abort():产生一个SIGABRT信号给当前进程。在 UNIX 系统上,默认行为是生成核心转储;在 Windows 系统上,进程立即返回退出代码 3。
os.execl(path, arg0, arg1, ...): 这个函数还有一系列功能类似的函数,比如os.execle(), os.execlp()等,这些函数使用参数列表arg0 , arg1, ...执行路径表示的可执行文件。
os.forkpty():fork一个子进程。
os.kill(pid, sig):将 sig 信号发送到 pid 对应的过程,用于结束该进程。
os.killpg(pgid, sig):将 sig 信号发送到 pgid 对应的进程组。
os.popen(cmd, mode='r', buffering=-1):用于打开对cmd命令的读写管道(mode为r时为只读管道,mode为rw时,它是一个读写管道),buffering buffer参数与内置的open()函数含义相同。此函数返回的文件对象用于读写字符串,而不是字节。
os.spawnl(mode, path, ...): 这个函数还有一系列功能类似的函数,比如os.spawnle(), os.spawnlp()等,这些函数用来执行新的程序新流程。
os.startfile(path[,operation]):使用与文件关联的工具执行指定文件对应的操作。如果不指定操作,则默认执行打开操作。操作参数必须是一个有效的命令行操作项,如打开(open)、编辑(edit)、打印(print)等。
os.system(command):运行操作系统上的指定命令。
下面程序示范了在 os 模块中与进程管理相关的函数的功能:
import os
# 运行平台上的cmd命令
os.system('cmd')
# 使用Excel打开g:\abc.xls文件
os.startfile('g:\\abc.xls')
os.spawnl(os.P_NOWAIT, 'E:\\Tools\\编辑工具\\Notepad++.7.5.6.bin.x64\\notepad++.exe', ' ')
# 使用python命令执行os_test.py程序
os.execl("D:\\Python\\Python36\\python.exe", " ", 'os_test.py', 'i')
如果直接运行上面的程序,可以看到程序运行后,用Excel打开了abe.xls文件,Notepad++工具也打开了,用python命令运行了os_test.py文件。但是,如果你在程序中取消注释粗体代码,你会看到程序运行后,只启动了cmd命令行程序。这是因为当使用as.system()函数运行程序时,新程序所在的进程会替换原来的进程。过程。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中包初始化有什么好处?01/08
- ♥ python函数的返回值是整数吗?12/10
- ♥ Python 布尔索引的使用10/25
- ♥ 如何在python中安装numpy09/15
- ♥ float函数类型转换详解10/14
- ♥ 如何在python中输入引号09/14
内容反馈