一、什么是OS模块?
OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。
在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告等等,经常会对大量文件和路径进行操作,这就需要依赖os模块。
>>> import os #导入OS模块;
>>> help(os) #查看os模块帮助文档,里面详细的模块相关函数和使用方法;
二、os 模块中常用的属性和函数
1、os.getcwd()
查看当前所在目录(路径):
import os
os.getcwd()
2、os.chdir()
切换目录(路径):
import os
os.chdir(r'/etc/sysconfig/')
print(os.getcwd())
/erc/sysconfig
3、os.curdir() , os.pardir()
返回当前目录的字符串名、返回当前目录的父目录字符串名
import os
print(os.curdir)
print(os.pardir)
4、os.makedirs()
递归创建目录,有了之后无法创建
import os
os.makedirs("a/b/c")
5、os.removedirs()
递归删除目录,并递归到上一级目录,如果也为空,则也删除,以此类推
import os
os.removedirs("a/b/c")
6、os.mkdir()
创建一个目录,只能创建一个
import os
os.mkdir("a")
7、os.rmdir()
删除一个目录,如果目录不为空,则会报错
import os
os.rmdir("a")
8、os.listdir()
显示指定目录下,所有的文件和子目录,包括隐藏文件
import os
os.listdir("指定目录")
9、os.stat()
获取文件/目录的信息,并可以获取到文件的大小
#获取文件/目录信息,并可以获取到文件的大小
print(os.stat("adada").st_size)
# 会打印出adada文件的大小。
# 会打印出文件的最后修改时间,但不是我们常见的格式,需要进行转换:
print(os.stat('adada').st_mtime)
from datetime import datetime
mod_time = os.stat('adada').st_mtime
print(datetime.fromtimestamp(mod_time))
10、OS.remove()
删除文件,但是不删除文件夹
import os
os.remove(("/adada/test.txt")
11、os.sep
输出操作系统特定的路径分隔符,如windows为“\\”,Linux为“/”
import os
s=os.sep
print(s)
\\
12、os.pathsep
输入用于分割文件路径的字符串
import os
print(os.pathsep)
:
13、os.system()
运行shell命令,直接显示(相当于启动一个全新的shell,然后去执行那条命令,命令完成过后,shell直接退出)
import os
print(os.system('ls /test/'))
14、os.environ
获取操作系统的环境变量
import os
print(os.environ)
15、os.path.split(path)
将path分割成目录和文件名二元组返回
import os
print(os.path.split('/test/123/abc')) #/test/123为目录 abc为文件
('/test/123','abc')
16、os.path.abspath(path)
返回path规范化的绝对路径
import os
print(os.path.abspath("abc"))
/test/123/abc
17、os.path.dirname(path)
返回path的目录
import os
print(os.path.dirname("/test/123/abc")) #文件为abc
/test/123
18、os.path.basename(path)
返回path最后的文件名(一个绝对路径只返回最后的文件名)
import os
print(os.path.basename("abc"))
abc
print(os.path.basename("/test/123/abc"))
abc
19、os.path.exists(path)
判断路径是否存在,如果路径存在,返回True;如果不存在,返回Flase
import os
print(os.path.exists("/test/123/abc"))
True
20、os.path.isabs(path)
判断是否是绝对路径,如果是,则返回True
import os
print(os.path.isabs("abc"))
Flase
print(os.path.isabs("/test/123/abc"))
True
21、os.path.isfile(path)
判断是否是一个文件,如果是则返回True,否则返回False
import os
print(os.path.isfile("abc"))
True
print(os.path.isfile("/test/123"))
False
22、os.path.isdir(path)
判断是否是一个存在的目录
import os
print(os.path.isdir("/test/123"))
True
print(os.path.isdir("abc"))
False
23、os.path.join(path1,path2)
将路径和文件名分为一个列表中的两个元素,将他们拼接起来,若其中有绝对路径,则会把之前的路径删除
import os
print(os.path.join("test/","abc"))
test/abc
print(os.path.join("test/123","abc"))
test/123/abc
24、os.path.getatime(path)
返回path所指的文件或者目录的最后存取时间
import os
print(os.path.getatime("path"))
25、os.path.getmtime(path)
返回path所指的文件或者目录的最后修改时间
import os
print(os.path.getmtime("path"))
26、os.popen('ls')
相当于打开了一个临时的文件存储打开的目录(可以赋给变量,字符串的形式
import os
a = os.popen('ls').read()
>>> 'douban\nfull_stack\njf_blog\nmysql57-community-release-el7-10.noarch.rpm\nnode-v8.9.4-linux-x64\n'
print(a)
douban
full_stack
jf_blog
mysql57-community-release-el7-10.noarch.rpm
node-v8.9.4-linux-x64
[root@server-7 ~]# ls -l
total 32
drwxr-xr-x 3 root root 36 Jun 23 19:51 douban
drwxr-xr-x 2 root root 22 Jul 10 14:02 full_stack
drwxr-xr-x 7 root root 4096 Jul 5 18:10 jf_blog
-rw-r--r-- 1 root root 25548 Apr 7 2017 mysql57-community-release-el7-10.noarch.rpm
drwxrwxr-x 7 500 500 111 Jun 5 15:04 node-v8.9.4-linux-x64