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调用windows api锁定计算机示例
Apr 17 Python
python使用arp欺骗伪造网关的方法
Apr 24 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python fileinput模块使用实例
Jun 03 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python numpy存取文件的方式
Apr 01 Python
Python进行特征提取的示例代码
Oct 15 Python
python使用pygame创建精灵Sprite
Apr 06 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
什么是接口(Interface)?
2013/02/01 面试题
项目经理任命书范本
2014/06/05 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
材料采购员岗位职责
2015/04/03 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis
Android实现图片九宫格
2022/06/28 Java/Android