Python学习之os模块及用法


Posted in Python onJune 03, 2020

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 个字节组成的 bytes 对象。该函数通过操作系统特定的随机性来源返回随机字节,该随机字节通常是不可预测的,因此适用于绝大部分加密场景。

下面程序示范了 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'

从上面的输出结果可以看出,在 Windows 系统上 Python 导入依赖模块的操作系统名称为“nt”;当前系统的登录用户名是“yeeku”:当前进程 ID 为“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,...来执行 path 所代表的执行文件的。

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 缓冲参数与内置的 open() 函数有相同的含义。该函数返回的文件对象用于读写字符串,而不是字节。

os.spawnl(mode, path, ...):该函数还有一系列功能类似的函数,比如 os.spawnle()、os.spawnlp() 等,这些函数都用于在新进程中执行新程序。

os.startfile(path[,operation]):对指定文件使用该文件关联的工具执行 operation 对应的操作。如果不指定 operation 操作,则默认执行打开(open)操作。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() 函数来运行程序时,新程序所在的进程会替代原有的进程。

知识点补充:

os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。

注意

如果是读写文件的话,建议使用内置函数open();

如果是路径相关的操作,建议使用os的子模块os.path;

如果要逐行读取多个文件,建议使用fileinput模块;

要创建临时文件或路径,建议使用tempfile模块;

要进行更高级的文件和路径操作则应当使用shutil模块。

到此这篇关于Python学习之os模块及用法的文章就介绍到这了,更多相关Python os模块及用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的__slots__使用示例
Feb 26 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
浅析python 字典嵌套
Sep 29 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
Python爬虫HTPP请求方法有哪些
Jun 03 #Python
什么是Python变量作用域
Jun 03 #Python
Python Flask框架实现简单加法工具过程解析
Jun 03 #Python
python自定义函数def的应用详解
Jun 03 #Python
Python中的整除和取模实例
Jun 03 #Python
python 负数取模运算实例
Jun 03 #Python
Python小白学习爬虫常用请求报头
Jun 03 #Python
You might like
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP数组函数知识汇总
2016/05/12 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
Python读取实时数据流示例
2019/12/02 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
NumPy排序的实现
2020/01/21 Python
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
财会自我鉴定范文
2013/12/27 职场文书
2014年司机工作总结
2014/11/21 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Python连续赋值需要注意的一些问题
2021/06/03 Python
python编程项目中线上问题排查与解决
2021/11/01 Python
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers