函数
glob.glob()
实用的文件匹配库,可以匹配给给定路径下的所有pattern,并以列表的形式返回。
查找文件只用到三个匹配符:
- ”
*
”, 匹配 0 个或多个字符; - “?”, ”?”匹配单个字符;
- “[]”:”[]”匹配指定范围内的字符,如:[0-9]匹配数字;
*注意:如果文件名以“点”开头 ,无法被 '*' 和 '?'匹配,如:".card.gif"*
该方法需要一个参数用来指定匹配的路径字符串(字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。
比如:
#是获得C盘下的所有txt文件:
glob.glob(r’c:*.txt’)
#获取指定目录下的所有图片:
print glob.glob(r"E:/Picture/*/*.jpg")
#使用相对路径
glob.glob(r’../*.py’)
#实例
extensions = ['jpg', 'jpeg', 'JPG', 'JPEG']
file_list = []
dir_name = './data/'
for extension in extensions:
file_glob = os.path.join(INPUT_DATA, dir_name, "*." + extension)
file_list.extend(glob.glob(file_glob))
print("Size of this file_list is :",len(file_list))
在win中,不区分大小写,所以extensions = ['jpg', 'jpeg']就可以,不然就会重复匹配。
sys.exit()
sys.exit()函数是通过抛出异常的方式来终止进程的,也就是说如果它抛出来的异常被捕捉到了的话程序就不会退出了。
os.模块系列大集合
OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。
在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告等等,经常会对大量文件和路径进行操作,这就需要依赖os模块。
首先要导入os模块
import os
help(os) #查看帮助文档
1、os.getcwd()
查看当前所在目录(路径);
>>> import os
>>> print(os.getcwd())
/home
2、os.chdir()
切换目录(路径);
>>> import os
>>> os.chdir(r'/etc/sysconfig/')
>>> print(os.getcwd())
/etc/sysconfig
>>> import os
>>> os.getcwd()
'/sibcb1/bioinformatics/gaosiqi'
#绝对路径可以
>>> os.chdir('/sibcb1/bioinformatics/gaosiqi/haha')
>>> os.getcwd()
'/sibcb1/bioinformatics/gaosiqi/haha'
#相对路径也可以
>>> os.chdir('SRX')
>>> os.getcwd()
'/sibcb1/bioinformatics/gaosiqi/haha/SRX'
3、os.curdir、os.pardir
返回当前目录字符串名、返回当前目录的父目录的字符串名;
>>> import os
>>> print(os.curdir)
.
>>> print(os.pardir)
..
4、os.makedirs()
生成一个多层递归目录,类似于R 中的tree?
>>> import os
>>> os.makedirs('/home/test/xuan')
5、os.removedirs()
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推;
>>> import os
>>> os.removedirs('test/xuan')
6、os.mkdir()
创建一个目录, 一次只能创建一个目录
>>> import os
>>> os.mkdir('test') #只能创建一个目录
>>> os.mkdir('abc/123/xxx')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'abc/123/xxx'
7、os.rmdir()
删除一个目录,若目录不为空则无法删除,报错;
>>> import os
>>> os.mkdir('test/abc') #在test下创建一个abc;
>>> os.rmdir('test') #无法删除test;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: 'test'
>>> os.rmdir('test/abc') #可以删除abc,因为abc目录下为空;
8、os.listdir()
显示指定目录下,所有的文件和子目录,包括隐藏文件;
>>> import os
>>> dirs = os.listdir('/root')
>>> print(dirs)
['.bash_logout', '.bash_profile', '.cshrc', '.tcshrc', '.bashrc', 'full_stack', 'jf_blog', 'node-v8.9.4-linux-x64', '.bash_history', '.config', '.npm', '.pki', '.ssh', '.gitconfig', '.oracle_jre_usage', '.cache', '.python_history', 'douban', 'mysql57-community-release-el7-10.noarch.rpm', '.mysql_history', '.viminfo']
9、os.remove()
删除文件,不能删除文件夹;
>>> import os
>>> print(os.listdir('/test'))
['123', 'hello.txt', '.file', 'qwe']
>>> os.remove('/test/.file')
>>> print(os.listdir('/test'))
['123', 'hello.txt', 'qwe']
>>> os.remove('/test')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: '/test'
10、os.system()
运行shell命令,直接显示(相当于启动一个全新的shell,然后去执行那条命令,命令执行完成过后,shell直接退出);
>>> import os
>>> print(os.system('ls /test/')) #调用系统命令
123 hello.txt qwe
0
[root@server-7 test]# ls
123 hello.txt qwe
11、os.path.split(path)
将path分割成目录和文件名二元组返回;;
>>> import os
>>> print(os.path.split('/test/123/abc'))
('/test/123', 'abc')
12、os.path.abspath(path)
返回path规范化的绝对路径;
>>> import os
>>> print(os.path.abspath('abc'))
/test/123/abc
13、os.path.dirname(path)
返回path的目录;
>>> import os
>>> print(os.path.dirname('/test/123/abc'))
/test/123
14、os.path.basename(path)
返回path最后的文件名(一个绝对路径只返回最后的文件名);
>>> import os
>>> print(os.path.basename('abc'))
abc
>>> print(os.path.basename('/test/123/abc'))
abc
15、os.path.exists(path)
判断路径是否存在,如果path存在,返回True;如果不存在,返回Flase;
>>> import os
>>> print(os.path.exists('/test/123/abc'))
True
16、os.path.isfile(path)
判断是否是一个文件,如果是则返回True,否则返回False;
>>> import os
>>> print(os.path.isfile('abc'))
True
>>> print(os.path.isfile('/test/qwe'))
False
17、os.path.join(path1,[path2],[path3])
将路径和文件名分为一个列表中的两个元素,将它们拼起来,若其中有绝对路径,则之前的path将会被删除.;
>>> import os
>>> print(os.path.join('/test/','hello.txt'))
/test/hello.txt
>>> print(os.path.join('/test/123','hello.txt'))
/test/123/hello.txt
18、os.popen('ls')
相当于打开了一个临时的文件存储打开的目录(可以赋给变量,字符串的形式);
>>> import os
>>> a = os.popen('ls').read()
>>> a
'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
类型转换
类型转换函数 | 转换路径 |
---|---|
float(string) |
字符串 -> 浮点值 |
int(string) |
字符串 -> 整数值 |
str(integer) |
整数值 -> 字符串 |
str(float) |
浮点值 -> 字符串 |
退出交互环境
quit()
#导入sys退出
import sys
sys,exit()