Python学习之os模块及用法
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、MacosX)上多条路径之间的分隔符是英文冒号(:)。
- os.linesep:返回当前系统的换行符。一般在Windows系统上换行符是“\r\n”:在UNIX系统上换行符是“\n”;在MacosX系统上换行符是“\r”。
- os.urandom(size):返回适合作为加密使用的、最多由N个字节组成的bytes对象。该函数通过操作系统特定的随机性来源返回随机字节,该随机字节通常是不可预测的,因此适用于绝大部分加密场景。
下面程序示范了os模块的大部分函数的用法:
importos #显示导入依赖模块的操作系统的名称 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模块中与进程管理相关的函数的功能:
importos #运行平台上的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就是“operatingsystem”的缩写,顾名思义,os模块提供的就是各种Python程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。
注意
如果是读写文件的话,建议使用内置函数open();
如果是路径相关的操作,建议使用os的子模块os.path;
如果要逐行读取多个文件,建议使用fileinput模块;
要创建临时文件或路径,建议使用tempfile模块;
要进行更高级的文件和路径操作则应当使用shutil模块。
到此这篇关于Python学习之os模块及用法的文章就介绍到这了,更多相关Pythonos模块及用法内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!