Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。
查看OS模块的帮助文档:
import os #导入os模块
help(os) #查看os模块的帮助文档,里面有相当详细的函数使用方法
文章目录
OS模块重要函数以及变量:
执行shell脚本
可以使用os.system、os.popen等命令
在windows中,就是在CMD中键入命令
在Linux系统中就是终端模拟器中键入命令
os.system
该函数返回命令执行结果的返回值
但是该函数会出现一些意想不到的错误,而正常的执行命令并没有问题,所以一般不建议使用该函数
os.popen
popen()创建一个管道,通过fork一个子程序,然后该子进程执行命令,返回值在标准IO流中.这个管道用于父进程与子进程之间的通信,要么向管道内读信息,要么向管道内写信息,取决去传递的参数, (read或者是write)
>>> import os
>>> p = os.popen('ping www.baidu.com')
>>> p
<os._wrap_close object at 0x000001ED0944D6A0>
>>> p.read()
'\n正在 Ping www.a.shifen.com [183.232.231.172] 具有 32 字节的数据:\n来自 183.232.231.172 的回复: 字节=32 时间=44ms TTL=54\n来自 183.232.231.172 的回复: 字节=32 时间=45ms TTL=54\n来自 183.232.231.172 的回复: 字节=32 时间=53ms TTL=54\n来自 183.232.231.172 的回复: 字节=32 时间=44ms TTL=54\n\n183.232.231.172 的 Ping 统计信息:\n 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),\n往返行程的估计时间(以毫秒为单位):\n 最短 = 44ms,最长 = 53ms,平均 = 46ms\n'
跨平台神器
众所周知 python 是跨平台的,而在Windows,Linux,Mac等系统中,会有很多的不同之处,而使用os模块在一定程度上可以无视平台的差异性.
os.name
作用:指示你正在使用的平台,windows为:‘nt’,而Linux/Unix为:‘posix’
os.sep
作用 : 可以更改操作系统中的路径分割符号.
不同的操作系统,文件路径的分割符号是不同的,Windows上,文件路径的分割符号是’\’,在Linux上是’/’,Maxc系统中是’:’,代码在不同平台运行是,路径符号的选择就会出现问题,但是使用os.sep,就不用考虑这个问题,os.sep根据所处的平台自动的选择相应的分隔符.支持手动更改
>>> import os
>>> os.sep
'\\'
>>> os.sep = '/'
>>> os.sep
'/'
os.linesep
作用:与os.sep类似,可以更改操作系统的行终止符. windows使用’\r\n’,Linux使用’\n’,Mac使用的是’\r’.
>>> os.linesep
'\r\n'
>>> os.linesep = '\r'
>>> os.linesep
'\r'
关于路径、目录操作的函数及变量:
- os.path.split():返回一个路径的目录名和文件名
- os.path.isfile()和os.path.isdir():分别检验给出的路径是一个目录还是文件
- os.path.exists():检验给出的路径是否真的存在
- os.listdir(dirname):列出dirname下的目录和文件
- os.getcwd():获得当前工作目录
- os.curdir:返回当前目录(’.’)
- os.chdir(path):改变工作目录到指定目录下
- os.path.isdir(name):判断name是不是目录,不是目录就返回false
- os.path.isfile(name):判断name这个文件是否存在,不存在返回false
- os.path.exists(name):判断是否存在文件或目录name
- os.path.getsize(name):或得文件大小,如果name是目录返回0L
- os.path.abspath(name):获得绝对路径
- os.path.isabs():判断是否为绝对路径
- os.path.normpath(path):规范path字符串形式
- os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
- os.path.splitext():分离文件名和扩展名
- os.path.join(path,name):连接目录与文件名或目录
- os.path.basename(path):返回文件名
- os.path.dirname(path):返回文件路径
- os.remove() 作用:可以删除指定的文件
- os.stat(file) 作用:可以获得指定文件的属性
- os.removedirs(r’path’):删除指定路径下的所有目录,但是目录必须为空
配置环境变量
读取环境变量
os.getenv(环境变量名称)
>>> os.getenv('Path')
'C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;'
os.environ[‘环境变量名称’]
>>> os.environ['Path']
'C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;'
设置环境变量
os.putenv(‘环境变量名称’, ‘环境变量值’)
os.environ[‘环境变量名称’]=‘环境变量值’
其中key和value均为string类型
注意: 设置的环境变量只存在于当前的python shell中(设置成功后用print(os.environ)[‘环境变量名称’]或print(os.getenv(‘环境变量名称’)) 查看)。也就是说,比如Windows环境下,在"我的电脑"——“属性”——“高级系统设置”——“高级”——"环境变量"中找不到刚才设置成功的环境变量。
如果想要真正的修改进环境变量,
在windows中需要:
import _winreg模块将环境变量写入注册表,再广播WM_SETTINGCHANGE消息
在Linux中需要:
使用linux命令,在bash_profile文件中添加环境变量后,使其生效即可。
终止进程
- os.exit() 作用:终止当前进程