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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
Django权限设置及验证方式
May 13 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
python接口自动化框架实战
Dec 23 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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
php 生成WML页面方法详解
2009/08/09 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
php实现插入排序
2015/03/29 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
javascript常用方法总结
2015/05/14 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python中几个比较常见的名词解释
2015/07/04 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
解决Python中回文数和质数的问题
2019/11/24 Python
python实现简单的购物程序代码实例
2020/03/03 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
Python控制台实现交互式环境执行
2020/06/09 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
村委会主任先进事迹
2014/01/15 职场文书
信息合作协议书
2014/10/09 职场文书
给下属加薪申请报告
2015/05/15 职场文书
教师考核鉴定意见
2015/06/05 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
用Python将GIF动图分解成多张静态图片
2021/06/11 Python