os 与 sys 介绍
os 与 sys 的官方解释
- os: This module provides a portable way of using operating system dependent functionality.
- sys: This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter.
os 与 sys 间没有联系
- os 只是一个标准的 python 库,用来向程序提供运行环境,特别是在文件系统、新进程创建、获取操作系统本身信息中,并屏蔽了各种不同操作系统的细节差异
- sys 则是 python 程序用来请求解释器行为的接口,比如 profiling 类(stats、getsizeof)、调试类(trace、frames、except)、运行时环境类(path、stderr、stdout)、解释器本身(version),inspect 某种程度上可以看成是 sys 提供功能上的封装
- 总之,一个 python 程序可以不用 os,但无法避免 sys 的介入(尽管可能不 import 它)
总结
- os 模块负责程序与操作系统间的交互,提供了访问操作系统底层的接口
- sys 模块负责程序与 python 解释器间的交互,提供了一系列函数和变量,用于操控 python 运行时的环境
常用方法
os 常用方法
import os
os.remove()
os.rename()
os.walk()
os.chdir()
os.mkdir()
os.makedirs()
os.rmdir()
os.removedirs()
os.listdir()
os.getcwd()
os.chmod()
os.path.basename()
os.path.dirname()
os.path.join()
os.path.split()
os.path.splitext()
os.path.getatime()
os.path.getctime()
os.path.getmtime()
os.path.getsize()
os.path.exists()
os.path.isabs()
os.path.isdir()
os.path.isfile()
sys 常用方法
import sys
sys.argv
sys.modules.keys()
sys.exc_info()
sys.exit(n)
sys.hexversion
sys.version
sys.maxunicode
sys.modules
sys.path
sys.platform
sys.stdout
sys.stdin
sys.stderr
sys.exc_clear()
sys.exec_prefix
sys.byteorder
sys.copyright
sys.api_version
其他方法
向环境变量中添加路径
- 当导入一个模块时,默认会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在 sys 模块的 path 中
import sys
sys.path
- 此时 sys.path 返回的是一个列表,该列表下的路径已经添加到系统的环境变量
- 如果模块不在当前程序所在目录下,通过列表的 append() 方法进行添加
sys.path.append(引用模块的地址)
使用 os 模块动态获取目录或文件路径
- 代码除了能在本地运行,也需要在不修改代码的前提下在其他的环境下运行,这样才能达到高复用性和低维护成本
- 在接口测试的模块调用中,会定义很多相关路径,而这些路径必须使用相对路径且能够动态获取才能够满足框架的基本要求,因此可以单独创建一个 constants 模块处理该问题,来动态获取当前文件的根路径
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG_DIR = os.path.join(BASE_DIR, 'Configs')
CONFIG_FILE_PATH = os.path.join(CONFIG_DIR, 'init.ini')
DATAS_DIR = os.path.join(BASE_DIR, 'TestDatas')
DATA_FILE_PATH = os.path.join(DATAS_DIR, 'TestDatas.txt')
LOGS_DIR = os.path.join(BASE_DIR, 'Logs')
REPORTS_DIR = os.path.join(BASE_DIR, 'Reports')
返回文件路径
os.path.dirname(文件路径)
os.path.abspath(文件名)
os.path.dirname(os.path.dirname(__file__))