1、简介
os就是“operating system”的意思,os模块提供的就是各种Python程序与操作系统进行交互的接口。如果该模块相关功能出错,会抛出OSError异常或其子类异常。
注意,如果是读写文件的话,建议使用内置函数open();如果是路径相关的操作,建议使用os的子模块os.path;如果要逐行读取多个文件,建议使用fileinput模块;进行更高级的文件和路径操作要使用shutil模块。
当然,使用os模块可以写出操作系统无关的代码并不意味着os无法调用一些特定系统的扩展功能,但要切记一点,一旦这样做就会极大损害代码的可移植性。
此外,导入os模块还要小心一点,千万不要为了图省事儿而将os模块解包导入,即不要使用from os import *来导入os 模块;否则os.open()将会覆盖内置函数open(),从而造成预料之外的错误。
2、常用功能
注意,os模块中大多数接受路径作为参数的函数也可以接受“文件描述符”作为参数。文件描述符:file descriptor,在python文档中简记为fd,是一个与某个打开的文件绑定的整数,可以理解为该文件在系统中的编号。
2.1 os.name
该属性广泛的指明了当前python运行的环境,实际上是导入的操作系统相关模块的名称。目前有效名称为以下三个:posix,nt,java.其中posix是portable operating system interface of unix(可移植操作系统接口)的缩写。linux和Mac os均会返回该值;nt全称为“microsoft windows NT”,大体上等同于windows操作系统。java是虚拟机环境下的返回值。
在win10操作系统是执行代码返回为os
>>> import os
>>> os.name
'nt'
查看sys模块中的sys.platform属性可以得到关于运行平台更详细的信息,在此不再赘述。
2.2 os.environ
os.environ属性可以返回环境相关的信息,主要是各类环境变量。返回值是一个映射(类似字典类型),具体的值为第一次导入os模块时的快照,其中的各个键值对,键是环境变量名称,值是环境变量对应的值,第一次导入os模块之后,除非直接修改os.environ的值,否则该属性值不再变化。
比如其中键为“HOMEPATH”(linux下为“HOME”)的项,对应值就是用户主目录的路径。windows下,其值为
>>> os.environ["HOMEPATH"]
'd:\\justdopython'
Linux下,其值为
>>> os.environ["HOME"]
'/home/justdopython'
由于要使用os.environ["CUDA_VISIBLE_DEVICES"] 功能,使用CPU运行程序,设定为
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # 选择使用cpu或gpu -1为使用cpu
详见链接:Python os 模块详解 - 知乎 (zhihu.com)