python常用模块

本节大纲:

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文件组成的代码集合就称为模块

如:os是系统相关的模块,file是文件操作相关的模块

模块分为三种:

自定义模块

内置模块

开源模块(第三方模块)

自定义模块

1.定义模块

情景一

情景二

 2.导入模块

在python中,要想使用模块,需要先导入,导入模块有以下几种方式:

如要导入一个名为module的模块

1 import module
2 from module.xx.xx import xx
3 from module.xx.xx import xx as rename  
4 from module.xx.xx import *
#*号这种导入模式会导入一个模块中的所有项目,这种方法虽然很简单,便利,但是不推荐使用,
#因为引入的其他来源的命令,很可能覆盖了已有的定义,存在一定的安全隐患

导入模块其实就是在告诉Python解释器去解释那个py文件

如果导入的是一个py文件,解释器就解释该py文件

如果导入的是一个包,解释器就解释该包下的__init__.py文件

Python中,导入模块时是根据那个路径作为基准来进行的呢?

可通过sys模块中的sys.path来查看

import sys
print(sys.path)

#['D:\\PycharmProjects\\fullstack\\homework_oneday\\module\\module_file', 'D:\\PycharmProjects\\fullstack', 'C:\\Program Files\\Python35\\python35.zip', 'C:\\Program Files\\Python35\\DLLs', 'C:\\Program Files\\Python35\\lib', 'C:\\Program Files\\Python35', 'C:\\Program Files\\Python35\\lib\\site-packages']

如果sys.path路径列表中没有你想要的路径,可以通过sys.path.append('路径')添加

通过os模块可以获取各种目录

import sys
import os

pre_path = os.path.abspath('../')
sys.path.append(pre_path)

包(package)的概念

我们先设想一下,如果不同的人编写的模块名相同怎么办?为了避免冲突,Python又引进了按目录来组织模块的方法,称为包(package)。

假设,如下图,我的两个time_file.py模块名字重名了,但是这两个模块的功能都不相同,如果这两个模块都在同一级目录中,那么我在其他地方要调用这个time_file.py模块,那么这个时候就会发生冲突,在这里我们就可以通过包来组织模块,避免冲突,

 

方法是:选择一个顶层包名,引入包以后,只要顶层的包名不与别人冲突,那这个包里面的模块都不会与别人冲突了。

请注意:每个包目录下来都会有一个__init__.py的文件,这个文件必须是存在的,否则,Python就不把这个目录当成普通目录,而不是一个包,__init__.py可以是空文件,也可以有python代码,__init__.py本身就是一个文件,它的模块命就是对应的包名,它一般由于做接口文件

开源模块(第三方模块) 

一.下载安装

下载安装的两种方式

1 yum
2 pip
3 apt-get
4 ...
1 下载源码
2 解压源码
3 进入目录
4 编译源码  python setup.py build
5 安装源码  python setup.py install

注:在使用源码安装时,需要使用到gcc编译和Python开发环境,所以,要事先将环境安装上

1 yum install gcc
2 yum install python-devel
3 或
4 apt-get python-dev

安装成功后,模块会自动安装到sys.path中的某个目录中,如:

1 /usr/lib/python3.5/site-packages/

导入模块的方式同自定义模块导入的方式一样

 三.模块paramiko(晚上回家补齐)

 

内置模块

一.time()模块

在python中,通常有以下几种方式来表示时间:

时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,

格式化的时间字符串:

元组(struct_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

复制代码

1 import time
2 
3 print(time.time())  # 返回当前时间的时间戳 1481597763.3750336
4 print(time.localtime())  # 将一个时间戳转换为当前时区
5 #  time.struct_time(tm_year=2016, tm_mon=12, tm_mday=13, tm_hour=10, tm_min=57, tm_sec=31, tm_wday=1, tm_yday=348, tm_isdst=0)
6 print(time.gmtime())  # localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
7 #  time.struct_time(tm_year=2016, tm_mon=12, tm_mday=13, tm_hour=3, tm_min=0, tm_sec=47, tm_wday=1, tm_yday=348, tm_isdst=0)

复制代码

 

复制代码

 1 print(time.ctime())  # Tue Dec 13 21:29:55 2016
 2 
 3 print(time.gmtime(time.time()-9000))
 4 #返回utc时间的struc时间对象格式
 5 #time.struct_time(tm_year=2016, tm_mon=12, tm_mday=13, tm_hour=11, tm_min=2, tm_sec=17, tm_wday=1, tm_yday=348, tm_isdst=0)
 6 
 7 
 8 
 9 #日期转换成时间戳
10 time_struct = time.strptime("2016-12-12 18:24:30","%Y-%m-%d %X")
11 print(time_struct) 
12 #time.struct_time(tm_year=2016, tm_mon=12, tm_mday=12, tm_hour=18, tm_min=24, tm_sec=30, tm_wday=0, tm_yday=347, tm_isdst=-1)
13 #将日期字符串转换struct时间对象格式
14 
15 
16 #将struct时间对象转换成时间戳
17 time_struct = time.strptime("2016-12-12 18:24:30","%Y-%m-%d %X")
18 time_one_struct = time.mktime(time_struct)
19 print(time_one_struct)
20 #1481538270.0
21 
22 #将时间戳转换为字符串格式
23 print(time.gmtime(time.time()-99999)) # 将utc时间戳转换成struct_time格式
24 
25 #将utc struct_time格式转换为指定的字符串格式
26 print(time.strftime("%Y-%m-%d %X",time.gmtime()))

#sleep()  #线程推迟自定的时间运行,单位为秒

#clock()
#这个需要注意啦,在不同的系统上含义不同,在unix系统上,它返回的是'进程时间',用秒表示的浮点数(时间戳)
#在windows中,第一次调用,返回的是进程运行的实际时间,而第二次之后的调用是自第一次调用后到现在的运行
#的时间,即两次的时间差

复制代码

 

复制代码

 1 import datetime
 2 
 3 #显示当前时间日期
 4 print(datetime.datetime.now())
 5 #  2016-12-13 21:58:43.911173
 6 
 7 #当前时间+3天
 8 print(datetime.datetime.now() + datetime.timedelta(3))
 9 #2016-12-16 22:01:17.556961
10 
11 #当前时间-3天
12 print(datetime.datetime.now() + datetime.timedelta(-3))
13 #2016-12-10 22:04:18.496310
14 
15 #当前时间+30分
16 print(datetime.datetime.now() + datetime.timedelta(hours=3))
17 #2016-12-14 01:05:43.915196
18 
19 #时间替换
20 c_time = datetime.datetime.now()
21 print(c_time.replace(minute=3,hour=2))
22 #2016-12-13 02:03:14.949403  将小时数与分钟数替换
23 
24 #时间戳直接转换为日期格式
25 print(datetime.date.fromtimestamp(time.time()))  # 2016-12-13

复制代码

 

 二random模块

复制代码

 1 import random
 2 
 3 #0,1之间时间生成的浮点数  float
 4 print(random.random())
 5 
 6 #随机生成传入参数范围内的数字 即 1,2,3
 7 print(random.randint(1,3))
 8 
 9 #随机生成传入参数范围内的数字,range顾头不顾尾
10 print(random.randrange(1,3))
11 
12 #随机选择任意一个数字
13 print(random.choice([1,'23',[4,5]]))
14 
15 #随机选择任意两个数字
16 print(random.sample([1,'23',[4,5]],2))

复制代码

小测试:随机生成一个5位数的验证码

复制代码

 1 import random
 2 
 3 def v_code():
 4     code = ''
 5     for i in range(5):
 6         num = random.randint(0,9)
 7         alf = chr(random.randint(65,90))
 8         add = random.choice([num,alf])
 9         code += str(add)
10     return code
11 result = v_code()
12 print(result)

复制代码

 三.os模块

os模块提供对操作系统进行调用的接口

复制代码

1 import os
2 print(os.getcwd())
3 获取当前的工作目录,即当前Python脚本工作的目录路径,相当于Linux中的pwd
4 
5 print(os.chdir("当前目录名称/../../"))  # 改变当前脚本工作目录,相当于shell下的cd
6 
7 os.makedirs("dirname1/dirname2")  # 可生成多层递归目录
8 os.removedirs("dirname1/dirname2")  # 若目录为空,则删除,并递归到上一级目录,如也为空则删除,以此类推

复制代码

 

复制代码

 1 import os
 2 
 3 # 获取当前的工作目录,即当前Python脚本工作的目录路径,相当于Linux中的pwd
 4 print(os.getcwd())
 5 
 6 
 7 print(os.chdir("D:\\PycharmProjects\\fullstack"))  # 改变当前脚本工作目录,相当于shell下的cd
 8 
 9 os.makedirs("dirname1/dirname2")  # 可生成多层递归目录
10 os.removedirs("dirname1//dirname2")  # 若目录为空,则删除,并递归到上一级目录,如也为空则删除,以此类推
11 os.mkdir("dirname")  # 生成当级目录,相当于shell中的mkdir dirname

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值