Python基础-week05

本节大纲:Author:http://www.cnblogs.com/Jame-mei

  1. 模块介绍

  2. time & datetime模块

  3. random

  4. os

  5. sys

  6. shutil

  7. json & picle

  8. shelve

  9. xml处理

  10. yaml处理

  11. configparser

  12. hashlib

  13. subprocess

  14. logging模块

  15. 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模块

  

 

 

  

posted on 2018-03-29 14:38 Jame-Mei 阅读() 评论() 编辑 收藏

版权声明:本文为Jame-mei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Jame-mei/p/8669712.html