python笔记-os模块
python编程时,经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。
一、常用的os命令
- os.name ——判断现在正在使用的平台,windows返回”nt“,linux返回”posix“
- os.listdir() ——当前文件所属上级目录下所有的文件和目录名(以列表的形式全部列举出来,其中没有区分目录和文件)
- os.remove() ——删除指定文件
- os.rmdir() ——删除指定目录
- os.mkdir() ——创建目录(注意:这样只能建立一层,要想递归建立可用:os.makedirs())
- os.path.getsize() ——获得文件的大小
- os.path.isdir() ——判断指定对象是否为目录
- os.path.isfile() ——判断指定对象是否为文件
- os.path.split() ——返回路径的目录和文件名
备注:此处只是把前后两部分分开而已。就是找最后一个'/'。看如下示例:
1 >>>import os 2 >>>print(os.path.split("a/b/c/d")) 3 >>>print(os.path.split("a/b/c/d/")) 4 输出结果: 5 ('a/b/c', 'd') 6 ('a/b/c/d', '')
10.os.path.abspath() ——获得绝对路径
11.os.path.realpath() ——获得绝对路径
12.os.getcwd() ——获取当前工作的目录
13.os.path.join(path,name) ——连接目录和文件名
14.os.path.dirname(path) ——返回文件路径
15.os.path.basename(path) ——返回文件名
1 os.path.split(path) 将path分割成目录和文件名 2 os.path.dirname(path) 返回path的目录,等同于os.path.split(path)[0] 3 os.path.basename(path) 返回path的文件名,等同于os.path.split(path)[1]
备注:python的__file__属性表示文件当前的位置,例如os.path.dirname(__file__)就代表当前访问文件的路径
项目目录如下截图:
import os filePath = os.path.dirname(__file__) print(filePath) filePath1 = os.getcwd() print(filePath1) testPath = os.path.join(filePath,'TEST','test.py') print(testPath) baseFileName = os.path.basename(testPath) print(baseFileName)
执行结果:
二、python中获取路径os.getcwd()和os.path.dirname(os.path.realpath(__file__))的区别和对比
项目目录如下截图所示:
【1】先看第一个文件getPath.py,代码如下:
import os class test_get_path: def getCurrentPath1(self): cur_path = os.path.dirname(os.path.realpath(__file__)) return cur_path def getCurrentPath2(self): cur_path = os.getcwd() return cur_path if __name__ == "__main__": tt = test_get_path() f1 = tt.getCurrentPath1() f2 = tt.getCurrentPath2() print("fun1:",f1) print("fun2:",f2)
执行得到的结果如下:
并未看出本质区别,获取的都是当前脚本所在的Haey目录
【2】再看看第二个文件test.py,代码如下:
from Haey.getPath import test_get_path path1 = test_get_path().getCurrentPath1() path2 = test_get_path().getCurrentPath2() print("path1:",path1) print("path2:",path2)
执行得到的结果如下:
这个时候结果就不同了,请看如下分析:
os.path.dirname(os.path.realpath(__file__))获取的是__file__所在脚本的路径,也就是getPath.py的路径
而os.getcwd()获取的是当前最外层调用的脚本路径,即test.py所在的目录,也可以描述为起始的执行目录,A调用B,起始的是A,那么获取的就是A所在的目录路径
总结:
两个函数都是返回当前脚本所在的目录。区别是如果存在函数调用,如A调用B,那么getcwd返回的是A所在目录,而os.path.dirname(os.path.realname(__file__))是获取你刚才所引用的模块所在的绝对路径,__file__为内置函数。
注意:在接口自动化测试框架中,我们的代码除了能在本地运行,也能在不在修改代码的前提下在其他的环境下能够运行,这样才能达到高复用性和低维护成本,我们在接口测试的模块调用中,会定义很多相关路径,而这些路径必须使用相对路径且能够动态获取才能够满足框架的基本要求