Python 基础学习

函数

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()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 学习python快2个星期了,从刚开始看Learn Python the Hard Way开始,翘完前40例代码,...
    Mered1th阅读 390评论 0 2
  • 文件和异常处理 从文件中读取数据 要使用文本文件中的信息,首先需要将信息读取到内存中。为此,我们可以一次性读取文件...
    习惯芥末味阅读 345评论 0 1
  • 标准库学习: 日常应用比较广泛的模块是: 1. 文字处理的 re 2. 日期类型的time、datetime 3....
    ericblue阅读 224评论 0 0
  • 记录参与python基础知识14天(08/28-09/10)打卡学习活动,每天更新 python 第一天(08/2...
    营cory阅读 278评论 0 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,562评论 0 11