Python中的OS模块

Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。

查看OS模块的帮助文档:

import os #导入os模块
help(os) #查看os模块的帮助文档,里面有相当详细的函数使用方法

文章目录

  • OS模块重要函数以及变量:
    • 执行shell脚本
      • os.system
      • os.popen
    • 跨平台神器
      • os.name
      • os.sep
      • os.linesep
    • 关于路径、目录操作的函数及变量:
    • 配置环境变量
      • 读取环境变量
        • os.getenv(环境变量名称)
        • os.environ['环境变量名称']
      • 设置环境变量
        • os.putenv('环境变量名称', '环境变量值')
        • os.environ['环境变量名称']='环境变量值'
    • 终止进程

OS模块重要函数以及变量:

执行shell脚本

可以使用os.systemos.popen等命令
在windows中,就是在CMD中键入命令
在Linux系统中就是终端模拟器中键入命令

os.system

该函数返回命令执行结果的返回值
但是该函数会出现一些意想不到的错误,而正常的执行命令并没有问题,所以一般不建议使用该函数

os.popen

popen()创建一个管道,通过fork一个子程序,然后该子进程执行命令,返回值在标准IO流中.这个管道用于父进程与子进程之间的通信,要么向管道内读信息,要么向管道内写信息,取决去传递的参数, (read或者是write)

>>> import os
>>> p = os.popen('ping www.baidu.com')
>>> p

>>> 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() 作用:终止当前进程

你可能感兴趣的:(python)