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编程中装饰器的使用示例解析
Jun 20 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
python使用zip将list转为json的方法
Dec 31 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
Python计算IV值的示例讲解
Feb 28 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python定义函数实现累计求和操作
May 03 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
基于Python正确读取资源文件
Sep 14 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
如何分别全角和半角以避免乱码
2006/10/09 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
详解VUE 数组更新
2017/12/16 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python深入学习之装饰器
2014/08/31 Python
详解python进行mp3格式判断
2016/12/23 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
如何完美的建立一个python项目
2020/10/09 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
采购员岗位职责
2013/11/15 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
golang判断key是否在map中的代码
2021/04/24 Golang
详解Python中的进程和线程
2021/06/23 Python