os¶
注意
标准库os的源代码是Lib/os.py。
而os.path是另外一个相对独立的子模块,源代码是Lib/posixpath.py (用于 POSIX) 和Lib/ntpath.py(用于 Windows)。
当然,os.path还是通过os来进行导出的。
标准库os就是operating system的简写,是Python提供的操作系统接口。
操作系统信息¶
os.uname()会返回当前操作系统的识别信息,包括:
- sysname - 操作系统名
- nodename - 机器在网络上的名称(需要先设定)
- release - 操作系统发行信息
- version - 操作系统版本信息
- machine - 硬件标识符
例如:
> os.uname()
posix.uname_result(sysname='Darwin', nodename='YangZhangMBA.local', release='23.6.0', version='Darwin Kernel Version 23.6.0: Wed Jul 31 20:53:05 PDT 2024; root:xnu-10063.141.1.700.5~1/RELEASE_ARM64_T8112', machine='arm64')
环境变量¶
os.environ是环境变量的字典。
这个映射是在第一次导入 os 模块时捕获的,通常作为 Python 启动时处理 site.py 的一部分。除了通过直接修改 os.environ 之外,在此之后对环境所做的更改不会反映在 os.environ 中。
迷惑行为
我们知道
os.putenv()可以用来设置环境变量。os.unsetent()可以用来删除环境变量。
迷惑的是:
删除 os.environ 中的项目会自动转化为对 unsetenv() 的相应调用;然而,对 unsetenv() 的调用并不更新 os.environ ,所以实际上最好是删除 os.environ 的项目。
os.putenv()也是同理
文件和目录操作¶
os提供了一系列的函数来对文件和目录进行操作。
包括但不限于:
os.chdir()- 类似Unix Shell的
cd
- 类似Unix Shell的
os.mkdir()- 类似Unix Shell的
mkdir
- 类似Unix Shell的
os.link()- 类似Unix Shell的
link
- 类似Unix Shell的
os.listdir()- 类似Unix Shell的
ls
- 类似Unix Shell的
等。
当然,与其调用这些我更喜欢使用操作系统原生的命令。
进程信息¶
可以通过os.getppid()以及os.getpid()来获取父进程、进程的pid。
可以通过os.getcwd()来获取当前的工作目录。
进程管理¶
os.fork()os.kill()os.posix_spawn()os.execve()os.plock()os.wait()os.system()os.startfile()
等。
其中os.system(command)比较常用。
我们可以用它来直接使用操作系统提供的api,而不是Python包装的api。
例如
> os.system('curl baidu.com')
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
0
如此一来,我们就可以用Shell提供的接口完成任何事情了。
上位替代
subprocess 模块可以构建新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码。
是os模块中os.spawn*()和os.system()的上位替代。
创建日期: 2023-01-13 15:21:08
广告
人要恰饭的嘛🤑🤑