Python基础-week05
Python基础-week05
本节大纲:Author:http://www.cnblogs.com/Jame-mei
-
模块介绍
-
time & datetime模块
-
random
-
os
-
sys
-
shutil
-
json & picle
-
shelve
-
xml处理
-
yaml处理
-
configparser
-
hashlib
-
subprocess
-
logging模块
-
re正则表达式
一.模块
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
1.定义
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑),本质就是.py结尾的python文件名,用途就是实现一个功能。
例如:文件名为test.py,对应的模块就是test
2.导入方法
import module_name1
import module_name2,module_name3 #导入多个模块
from moudule_name import * #导入module_name中的所有函数和变量,可能会跟本地的函数重名。
from module_name import logger() as logger2 #与本地的logger()函数重名,进行重命名!
from和import的区别?
from调用函数可以直接使用,不用加模块名.xx 来调用。
import 调用需要用模块名.xxx来调用。
3.import本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释一遍:import moudule_alex
(相当于module_alex=all_code 把所有的代码)
import module_name —>module_name.py —->module_name.py的路径—-》sys.path
from test import m1 相当于m1=’code’就可以直接使用和读取m1的值!
4.导入优化
#优化前!
import module_test
#导入优化后为,相当于把module_test的sayhello()函数拿到当前的文件中,不需要一遍遍的查找解释!
from module_test import sayhello
#也可以加上 as 起个别名防止跟当前文件中的函数名冲突!
5.模块的分类
a:标准库:sys,os 等
time和datetime
strftime(‘格式’,struct_time)—->’格式化的字符串’
strptime(‘格式化的字符串’,’格式’)—>struct_time(时间元祖)
b:开源模块(第三方模块)
yum install gcc等这类开源模块,也可以wget 下载源码包手动安装。
c.自定义模块
自己定义的python模块,提供给其他的py文件使用。
更详细的模块说明请参考武老师:http://www.cnblogs.com/wupeiqi/articles/4963027.html
二.time & datetime 模块
1.time & datetime 方法实例
1 import time 2 3 4 #1.时间戳,通过gmtime转换成元祖 5 x=time.time() #这个取出来的时间为分界点的时间,如果是中国要+8小时东八区,locatime可以直接取时间。 6 gmt=time.gmtime(x) #x不写默认为localtime本地时间 7 print (gmt.tm_year,'年',gmt.tm_mon,'月',gmt.tm_mday,'日') 8 9 10 11 12 #2.格式化的时间字符串,gmt是将秒转换成元祖的格式。 13 #元祖转换成字符串 14 strtime=time.strftime("%Y-%m-%d %H:%M:%S",gmt) 15 strtime2=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 16 print (strtime) 17 print (strtime2) 18 19 #字符串转换成元祖,与strftime正好相反,格式可以随意排版,但是要与%H等参数对应。 20 print(time.strptime("2018-03-28 02:14:15","%Y-%m-%d %H:%M:%S")) 21 print(time.strptime("02:14:15 2018-03-12","%H:%M:%S %Y-%m-%d")) 22 sruct_time1=time.strptime("02:14:15 2018-03-12","%H:%M:%S %Y-%m-%d") 23 24 #将元祖转换成字符串,如果不传参默认当前时间 25 print (time.asctime(sruct_time1)) 26 print (time.asctime()) 27 #(Wed Mar 28 17:48:04 2018) 28 29 #,如果不传参默认当前时间 30 print (time.ctime()) 31 #(Wed Mar 28 17:48:04 2018) 32 33 34 #3.元祖,共九个元素 35 print(time.localtime()) #相当于 x=time.time() gmt=time.gmtime(x) 36 37 #将秒转换成元祖,并取出其中指定的天 38 lt=time.localtime(123213123) 39 print ("in 1973 year's %d day!" %lt.tm_yday ) 40 41 #将元祖转换成秒 42 print(time.mktime(lt))
time实例
1 #Author:http://www.cnblogs.com/Jame-mei 2 import datetime 3 #1.取当前时间 4 print (datetime.datetime.now()) 5 6 #2.当前时间+3天 7 print (datetime.datetime.now()+datetime.timedelta(3)) 8 9 #3.当前时间 -3天 10 print (datetime.datetime.now()+datetime.timedelta(-3)) 11 12 #4.当前时间 +3小时 13 print (datetime.datetime.now()+datetime.timedelta(hours=3)) 14 15 #4.当前时间 -30分钟 16 print (datetime.datetime.now()+datetime.timedelta(minutes=-30))
datetime实例
2.time & datetime图,练习完实例后多思考以下图
三.random模块
1.random常用方法实例
1 #Author:http://www.cnblogs.com/Jame-mei 2 import random 3 4 '''random的实际应用:''' 5 6 #1.随机整数,randint 包括5 7 print (random.randint(1,5)) 8 9 #2.随机选取0-100的偶数,不包括101 10 print (random.randrange(0,101,2)) 11 12 #3.随机浮点数1个,uniform范围不包括2;random(),默认1以内的 13 print (random.random()) 14 print(random.uniform(1,2)) 15 16 #4.随机字符串 17 print (random.choice('abcd')) 18 #从多个字符串中选取 多个字符串 19 print (random.sample(['abc','jame','tomcat'],2)) 20 21 22 #5.洗牌 23 item=[1,2,3,4,5] 24 print ('before:',item) 25 random.shuffle(item) 26 print ('after:',item)
random常用实例
2.random的随机数应用
1 #Author:http://www.cnblogs.com/Jame-mei 2 import random 3 import string 4 5 #打印4位数字(字母+数字随意)的验证码 6 checkcode='' 7 for i in range(5): 8 current=random.randrange(0,5) 9 #字母 10 if current==i: 11 tmp=chr(random.randint(65,90)) #chr将数字转换成ASCII码对应的字母!! 12 #数字 13 else: 14 tmp=random.randint(0,9) 15 16 checkcode+=str(tmp) 17 18 print (checkcode)
随机数
四.os模块
1.os模块常用方法练习
1 #Author:http://www.cnblogs.com/Jame-mei 2 import os 3 import time 4 5 #1.getcwd(),获取该脚本的目录 6 #os.chdir("E:\pythonwork\s14\os") 7 print (os.getcwd()) 8 9 #2.chdir,相当于cd,再os.getcwd()来获取当前的目录才能看出效果 10 os.chdir("E:\pythonwork\s14") 11 print (os.getcwd()) 12 13 #3.curdir 14 print (os.curdir) 15 16 #4.pardir 获取当前目录父目录的字符串名:.. 17 print (os.pardir) 18 19 #5.mkdirs,可生成多个递归目录,在当前目录下新建了os/test1/test2目录 20 #os.makedirs('os/test1/test2') 21 22 #6.removedir,要求目录不为空的情况下 23 #os.removedirs(r"E:\pythonwork\s14\day05\os\os_test") 24 25 #7.创建和删除目录 26 #os.mkdir(r"E:\pythonwork\s14\day05\os\test_os2") 27 #生成单级目录;相当于shell中mkdir dirname 28 29 #os.rmdir(r"E:\pythonwork\s14\day05\os\test_os2") 30 #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname 31 32 33 #8.listdir 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 34 print(os.listdir('E:\pythonwork\s14\os')) 35 36 37 #9.删除一个文件 38 #os.remove(r'E:\pythonwork\s14\day05\os\remove_test.py') 39 40 #10.rename('oldname','newname') 重命名文件或者目录,其中windows里面的路径要加r,或者\来进行转义! 41 #os.rename(r'E:\pythonwork\s14\day05\os\rename_test.py',r'E:\pythonwork\s14\day05\os\rename_test2.py') 42 43 44 45 #11.stat(path/filename) 获取文件、目录信息 46 print (os.stat(r'E:\pythonwork\s14\day05\os\test1.py')) 47 48 #12.sep 输出操作系统特定的路径分隔符,可以进行跨平台,换个linux就变了/了 49 print (os.sep) 50 #.linsep 输出当前平安体使用的行终止符 51 print (os.linesep) 52 #.pathsep 输出用于分割文件路径的字符串 53 print(os.pathsep) 54 55 56 #13.name 输出字符串指示当前使用平台 57 print (os.name) 58 59 #14.system()运行shell命令,直接显示 60 print (os.system("ls -l")) 61 62 #15.environ 获取系统环境变量 63 print (os.environ) 64 65 #16.os.path大类! 66 67 #os.path.abspath() 返回path规范化的绝对路径, 68 print (os.path.abspath('test1.py')) 69 70 #os.path.split(path) 将path分割成目录和文件名二元组返回 71 print (os.path.split('E:\pythonwork\s14\day05\os\test1.py')) 72 #output:('E:\\pythonwork\\s14\\day05', 'os\test1.py') 这样一个元祖。 73 74 75 #返回path的目录。其实就是os.path.split(path)的第一个元素 76 print (os.path.dirname('E:\pythonwork\s14\day05\os\test1.py')) 77 78 79 # os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 80 print (os.path.basename('E:\pythonwork\s14\day05\os\test1.py')) 81 82 # os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False 83 print (os.path.exists(r'E:\pythonwork\s14\day05\os\test1.py')) 84 85 # os.path.isabs(path) 如果path是绝对路径,返回True 86 print (os.path.exists(r'E:\pythonwork\s14\day05\os\test1.py')) 87 88 # os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False 89 print (os.path.isfile(r'E:\pythonwork\s14\day05\os\test1.py')) 90 91 # os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False 92 print (os.path.isdir(r'E:\pythonwork\s14\day05\os')) 93 94 # os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 95 print (os.path.join(r'E:\pythonwork\s14',r'day05',r'os',r'test1.py')) 96 #output:E:\pythonwork\s14\day05\os\test1.py 97 98 # os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 99 filetime=os.path.getatime(r"E:\pythonwork\s14\day05\os\rename_test2.py") #返回的秒数 100 print (time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(filetime))) #先转换成元祖,再转换成指定格式的时间。 101 102 # os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 103 motime=os.path.getmtime(r"E:\pythonwork\s14\day05\os\rename_test2.py") 104 print (time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(motime)))
os模块常用的方法练习
2.更多参考官方文档
https://docs.python.org/2/library/os.html?highlight=os#module-os
五.sys模块