Python 全栈开发六 常用模块学习

本节大纲:

  1. 模块介绍
  2. time &datetime模块
  3. random
  4. os
  5. sys
  6. shutil
  7. json & picle
  8. shelve
  9. configparser
  10. hashlib

 

一、模块介绍

  模块的定义:在python中一个.py文件我们就可以称之为一个模块,python中有很多自带的模块我们叫内置模块,而我们自己创建的模块称之为自定义模块。模块可以被别的程序引入,以使用该模块中的函数等功能

  模块的导入:

# 方法一:
# import time
# 方法二:
from time import time
a = time()
print(a)
'''
以上两者的区别是:
第一种方法的导入的是模块的全部内容
第二种导入的是模块的其中一方法或属性
'''

所以在导入模块的时候需要根据需要来导入相应的内容,如果只用到模块内的其中一方法或属性尽量选择第二种导入方式,而需要用多个的时候为了减少代码量就选择第一种方式。当然import后面可以跟多个模块名。

二、time和datetime模块

在学习time模块之前我们学习一下time的一些属性。

索引(Index)属性(Attribute)值(Values)
0tm_year(年)比如2011
1tm_mon(月)1 - 12
2tm_mday(日)1 - 31
3tm_hour(时)0 - 23
4tm_min(分)0 - 59
5tm_sec(秒)0 - 61
6tm_wday(weekday)0 - 6(0表示周日)
7tm_yday(一年中的第几天)1 - 366
8tm_isdst(是否是夏令时)默认为-1

time模块
 1 import time
 2 
 3 #时间戳
 4 print(time.time()) #返回当前时间的时间戳
 5 
 6 #元组的形式
 7 print(time.gmtime())#返回格林威治0时区的时间
 8 # time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=15,
 9 #                  tm_min=34, tm_sec=6, tm_wday=1, tm_yday=107, tm_isdst=0)
10 print(time.gmtime().tm_year)  #可以根据元素的关系取出对应的时间
11 print(time.localtime()) #也是元组的形式
12 
13 #将元组形式转换成时间戳
14 
15 now = time.localtime()
16 print(time.mktime(now))
17 
18 #将元组形式转换成指定的字符串格式
19 
20 now1 = time.localtime()
21 print(time.strftime('%Y-%m-%d %H:%M:%S',now1))
22 
23 #将自定义的字符串格式转换为元组的形式
24 
25 print(time.strptime('2016-07-08','%Y-%m-%d'))
26 
27 time.sleep(2) #睡两秒
28 
29 m = time.time()  #当前时间的时间戳
30 n = time.gmtime()  #返回的是时间的元组形式,传入时间戳参数可以将时间戳转换成元组
31 n1 = time.gmtime().tm_year  #可以通过对应的元素来取得对应的时间信息
32 l = time.localtime() #返回当前本地时间的元组形式,将时间搓传入
33 l1 = time.localtime(m)  #传入参数也可以返回对应时间的元组形式
34 c = time.mktime(n) #将元组转换为时间戳
35 s = time.strftime("%Y-%m-%d %H-%M-%S") #以一定的格式输出时间
36 s2 = time.strftime("%Y-%m-%d %H-%M-%S",n) #后面如果接参数则必须是元组的形式
37 p = time.strptime("2018-03-01","%Y-%m-%d") #将时间转换成元组的形式
38 print(s2)

datetime

 1 import datetime
 2 
 3 # print(datetime.datetime.today()) 默认返回当前日期和时间的对象,也可以自定义日期和时间
 4 # print(datetime.date.today()) 默认返回当前日期的对象,也可以自定义日期
 5 
 6 # print(datetime.datetime.now()) 返回当前时间
 7 
 8 today = datetime.datetime.today()
 9 print(today)
10 
11 print(today.strftime("%I:%M:%S %p %d/%m/%Y"))  #自定义格式化时间
12 print(today.timetuple())   #将时间转换成元组的形势
13 print(today.replace(1949,10,1))   #返回一个替换后的date对象
14 
15 yesterday = today - datetime.timedelta(days=1)  #对(days)天,(hours)小时,(minutes)分进行运算
16 print(yesterday)

 random模块

1 import random
2 
3 print(random.random())  #生成一个0-1 的随机数
4 print(random.randint(1,7))  #s生成一个指定范围的的随机整数,两边都是闭区间
5 print(random.randrange(1,3))  #生成一个指定范围的随机整数,左闭右开

下面是一个random的简单应用:

 1 '''
 2 这是一个生成随机验证码的简单程序
 3 '''
 4 import random
 5 checkcode=''
 6 for i in range(6):
 7     current = random.randint(1,6)
 8     if i == current:     #若两个数相等,用ASII返回一个字母
 9         temp = chr(random.randint(65,90))
10     else:               #若不相等返回数字,并转换为字符串
11         temp = random.randint(1,9)
12     checkcode += str(temp)    #字符串拼接
13 print(checkcode)

os模块

 1 import os
 2 
 3 print(os.getcwd()) #获取当前的工作目录
 4 #os.chdir('dirname')改变当前脚本的工作目录,相当于shell的cd
 5 print(os.curdir)  #返回当前目录
 6 print(os.pardir)  #返回当前目录的父目录字符串名
 7 #os.makedirs('a/b/c')  #可以生成多层递归目录
 8 #os.removedirs(r'G:\PythonLearning\oldboy\oldboynotes\fiveday\osmodle\a\b\c')
 9 #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
10 #os.mkdir('a')  #生成单级目录
11 #os.rmdir(r'G:\PythonLearning\oldboy\oldboynotes\fiveday\osmodle\a')
12 #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdirdirname
13 #print(os.listdir(r'G:\PythonLearning\oldboy\oldboynotes\fiveday\osmodle\a'))
14 #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
15 #os.remove(r'G:\PythonLearning\oldboy\oldboynotes\fiveday\osmodle\a\1')
16 #删除指定的文件
17 #os.rename('oldname','newname') 重命名文件/目录
18 #print(os.stat('G:'))  获取文件或目录的信息
19 #print(os.sep) 输出操作系统指定的路径分隔符
20 # print(os.linesep)  输出当前平台使用的行终止符,即换行符
21 # print(os.pathsep) 输出用于分割文件路径的字符串,一般为;
22 # print(os.name) 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
23 #print(os.environ) #获取系统的环境变量
24 #print(os.path.abspath(__file__))  #返回path规范化的绝对路径
25 #print(os.path.split(__file__))  #将path分割成目录和文件名二元组返回
26 #print(os.path.dirname(__file__)) #返回path的目录。其实就是os.path.split(path)的第一个元素
27 #print(os.path.basename(__file__))  #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
28 #print(os.path.exists(__file__))  #如果path存在,返回True;如果path不存在,返回False
29 # os.path.isabs(path)  #如果path是绝对路径,返回True
30 # os.path.isfile(path)  #如果path是一个存在的文件,返回True。否则返回False
31 # os.path.isdir(path)  #如果path是一个存在的目录,则返回True。否则返回False
32 # os.path.join(path1[, path2[, ...]])  #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
33 # os.path.getatime(path)  #返回path所指向的文件或者目录的最后存取时间
34 # os.path.getmtime(path)  #返回path所指向的文件或者目录的最后修改时间

sys模块

 1 import sys
 2 print(sys.path)  #打印环境变量,返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
 3 
 4 #sys.path.append() 将以路径添加至环境变量
 5 #print(sys.argv)  打印程序本身的路径
 6 '''sys.exit()
 7 print('a')'''  #sys.exit()表示正常退出程序,正常退出后,后面不运行
 8 
 9 #print(sys.version)  获取解释器的版本值
10 #print(sys.platform) #返回操作系统平台名称
11 # sys.stdout.write('please')
12 # sys.stdout.write('you')   标准输出,不换行

json和picle模块

json:用于字符串和python数据类型直接转换

picle:用于python特有的类型和python的数据类型转换

json和picle的方法和用法一致只不过功能稍微不同:dump,load,dumps,loads

 1 import json
 2 
 3 di={"json":1,"picle":2}
 4 js = json.dumps(di)   #dumps将python的数据类型转换为所有语言都识别的字符串
 5 print(type(js))
 6 with open("a.txt","w") as fp:
 7     json.dump(di,fp)  #dump则是将python的数据类型转换为所有语言都识别的字符串,并且必须写入文件
 8 print(js)
 9 
10 import pickle
11 
12 pi = pickle.dumps(di) #dumps将python的数据类型转换为所有语言都识别的二进制字符串模式
13 print(type(pi))
14 
15 with open("b.txt","w") as fp2:
16     pickle.dump(pi,fp2)  #dump则是将python的数据类型转换为所有语言都识别的二进制字符串,必须写入文件
17 print(pi)

 反序列化操作

1 f = open("a.txt","r")
2 a = f.read()  #直接读取内容
3 print(json.loads(a)["json"])  #然后对其反序列化操作
4 f2 = open("a.txt","r")
5 print(json.load(f2))   #对文件描述符进行反序列化操作

 

shutil和zipfile模块

 1 import shutil
 2 
 3 #f = open('a',encoding='utf-8')
 4 # f.write('这一个关于复制的模块')
 5 # f2 = open('b','w',encoding='utf-8')
 6 # shutil.copyfileobj(f,f2)   #对文件里的内容进行拷贝,文件对象
 7 # shutil.copyfile('a','c')  #直接对文件进行拷贝,文件名
 8 # shutil.copystat('b','c')  #拷贝状态的信息,包括:mode bits, atime, mtime, flags
 9 # #shutil.copytree('timemodle','d')  #递归的去拷贝文件
10 #hutil.rmtree('d')   #递归删除文件
11 #shutil.move()   #递归移动文件
12 #shutil.make_archive('shutilmodle','zip',r'G:\PythonLearning') #对文件进行压缩
13 
14 import zipfile
15 
16 z = zipfile.ZipFile('a.zip','w')  #压缩
17 z.write('a')
18 print('---')
19 z.write('b')
20 z.close()
21 
22 z = zipfile.ZipFile('a.zip','r')  #解压
23 z.extractall()
24 z.close()

shelve模块

 1 #shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,
 2 # 可以持久化任何pickle可支持的python数据格式,字典,列表,类等
 3 import shelve,datetime
 4 
 5 d = shelve.open('shelvet')
 6 
 7 info = {'age':22,'job':'it'}
 8 name = ['wallace','alex']
 9 date = datetime.date.today()
10 
11 d['info']=info
12 d['name'] = name
13 d['date'] = date
14 print(d.get('info'))
15 d.close()

configparser模块

该模块用于生成和修改配置文件

 

 1 import configparser
 2  
 3 config = configparser.ConfigParser()
 4 config["DEFAULT"] = {'ServerAliveInterval': '45',
 5                       'Compression': 'yes',
 6                      'CompressionLevel': '9'}
 7  
 8 config['bitbucket.org'] = {}
 9 config['bitbucket.org']['User'] = 'hg'
10 config['topsecret.server.com'] = {}
11 topsecret = config['topsecret.server.com']
12 topsecret['Host Port'] = '50022'     # mutates the parser
13 topsecret['ForwardX11'] = 'no'  # same here
14 config['DEFAULT']['ForwardX11'] = 'yes'
15 with open('example.ini', 'w') as configfile:
16    config.write(configfile)

获取文档内的内容

 1 >>> import configparser
 2 >>> config = configparser.ConfigParser()
 3 >>> config.sections()
 4 []
 5 >>> config.read('example.ini')
 6 ['example.ini']
 7 >>> config.sections()
 8 ['bitbucket.org', 'topsecret.server.com']
 9 >>> 'bitbucket.org' in config
10 True
11 >>> 'bytebong.com' in config
12 False
13 >>> config['bitbucket.org']['User']
14 'hg'
15 >>> config['DEFAULT']['Compression']
16 'yes'
17 >>> topsecret = config['topsecret.server.com']
18 >>> topsecret['ForwardX11']
19 'no'
20 >>> topsecret['Port']
21 '50022'
22 >>> for key in config['bitbucket.org']: print(key)
23 ...
24 user
25 compressionlevel
26 serveraliveinterval
27 compression
28 forwardx11
29 >>> config['bitbucket.org']['ForwardX11']
30 'yes'

修改文档

 1 [section1]
 2 k1 = v1
 3 k2:v2
 4   
 5 [section2]
 6 k1 = v1
 7  
 8 import ConfigParser
 9   
10 config = ConfigParser.ConfigParser()
11 config.read('i.cfg')
12   
13 # ########## 读 ##########
14 #secs = config.sections()
15 #print secs
16 #options = config.options('group2')
17 #print options
18   
19 #item_list = config.items('group2')
20 #print item_list
21   
22 #val = config.get('group1','key')
23 #val = config.getint('group1','key')
24   
25 # ########## 改写 ##########
26 #sec = config.remove_section('group1')
27 #config.write(open('i.cfg', "w"))
28   
29 #sec = config.has_section('wupeiqi')
30 #sec = config.add_section('wupeiqi')
31 #config.write(open('i.cfg', "w"))
32   
33   
34 #config.set('group2','k1',11111)
35 #config.write(open('i.cfg', "w"))
36   
37 #config.remove_option('group2','age')
38 #config.write(open('i.cfg', "w"))

hashlib模块

该模块主要用于对文档内容进行加密计算

 1 import hashlib
 2 
 3 '''md5,SHA1, SHA224, SHA256, SHA384, SHA512
 4 不同的算法加密程度不同'''
 5 
 6 m = hashlib.sha512()
 7 m.update(b'hello')
 8 m.update('汪冠涛'.encode('utf-8'))  #中文时必须先对其转码为unicode
 9 print(m.digest())
10 m.update(b"it's be long time since last time...")
11 print(m.digest())
12 print(m.hexdigest())
1 b'i\xa4D\xf9\xa2\xc2\xb3}\x97U\xa9\xfc9\xcf_\xff}\xf1Ubq\xb4\xcb\xf9u\xed4I\xf6\xb23\x17\xcb\x93cjH[VP\x04\xe9)\x11\x1c\x06\xa0\xcc\xadN\xafd\xc7\xf4\rP\xd0\xbd\x93\xa98z\x84\xad'
2 b'\xbc\xe0\x94\xf5\x82\xa0i\x00\x03\xbd\xd5\xdf\xa0~\xd1\xd0\x1bD5\xdaJ_\x12\xcb>\xf9H7)\x1f\xe5\xb8\xf5\xb4\x96\x9d\xb5\x1c\x15Z\xcc7\xc9\x1c\xd8\xdd\x92\x89\xb2\x92A\x143\x01XR\xbb\x1a\xc5\xf8\xa2>d\xe2'
3 bce094f582a0690003bdd5dfa07ed1d01b4435da4a5f12cb3ef94837291fe5b8f5b4969db51c155acc37c91cd8dd9289b292411433015852bb1ac5f8a23e64e2

 

转载于:https://www.cnblogs.com/tashanzhishi/p/8871458.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值