Python学习day17-常用的一些模块

时间:2019-08-16
本文章向大家介绍Python学习day17-常用的一些模块,主要包括Python学习day17-常用的一些模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Python学习day17-常用的一些模块

包的概念

包其实就是模块的一种形式,包的本质就是一个含有.py文件的文件夹,其标志性文件就是__init__.py,也就是说文件夹下面有这个文件的就可以称之为包。包解决的就是分文件的问题,也就是说如果原来一个模块文件里有六十个函数,现在想把这六十个分开,分到两个或者更多的模块文件里去,那么就需要包这个概念,既不改变原本执行文件的调用模式,又不影响原执行文件的运行。

使用包的时候需要注意的几点是:

  1. 包内的所有文件都是被导入使用的,而不是被直接运行的
  2. 包内模块之间的导入可以使用绝对导入与相对导入两种导入模式
  3. 当该文件是执行文件时,不能用相对导入的语法,只有文件是被当做模块导入的时候才可以使用相对导入的语法来导入包
  4. 凡是在导入时带.的,也就是存在相对导入的情况下,点的左边都必须是一个包,也就是一个文件夹,不能是一个文件

关于__init__的几点说明

  1. 包的根目录下一定有一个__init__,其内容默认为空,他就是包里面最明显也是唯一的标识,实际上导入包就是导入的__init__,而且导入包一定要以执行文件的环境变量为准,不是模块的环境变量,在__init__里面导入包体内的模块时要注意从包名开始导入。
  2. __init__的另一个作用就是定义package中的__all__,也就是模糊导入。
  3. 不推荐在__init__里写过多代码,一般只在里面写需要导入的包里的一些函数和模块即可,不写实际性代码。
  • 下面的这些模块只需知道模块的大概功能即可,不必非要熟悉到每一个模块的每个内置方法,需要时查询即可。

time模块

time模块主要是支持三种不同格式的时间之间互相转换

分别是,时间戳,格式化时间,结构化时间。

时间戳timesmap

print(time.time())

格式化时间format time

print(time.strftime('%Y-%m-%d %X'))

结构化时间struce time

print(time.localtime())当地时间

print(time.gmtime())标准时间

time模块里最重要的是两个方法

time.time()返回当前的时间戳,即显示现在距离1970纪元后经过的浮点秒数

time.sleep()休眠时间,也就是在这几秒内不执行任何程序,用来做某些延时,和一些动画效果比较好

datetime模块

通常用来做时间的修改,即我们可以通过这个模块直接修改当前时间,包括年月日和时分秒。

比如

 
 
 
x
10
9
 
 
 
 
1
import datetime 
2
print(datetime.datetime.now())#显示当前时间
3
now = datetime.datetime.now()
4
print(now + datetime.timedelta(3))  # 默认加三天
5
print(now + datetime.timedelta(hours=3))  # 默认加三小时
6
print(now + datetime.timedelta(minutes=3))  # 默认加三小时
7
print(now.replace(year=1900))# 设定当前年份为1900年
 
 

os模块

os模块的主要功能是与操作系统交互,可以直接操控文件。

 
 
 
xxxxxxxxxx
27
 
 
 
 
1
import os
2
3
print(os.getcwd())# 获取当前文件目录
4
5
os.mkdir('file1')# 创建一个文件夹
6
os.rmdir('file1')# 删除指定文件夹
7
8
os.listdir()# 列出当前文件夹里的文件名,括号里最好放绝对路径,
9
os.rename()# 重命名
10
os.remove()# 删除指定文件
11
12
print(os.path.abspath())# 获取当前文件的绝对路径,以后要常用这个,因为其支持跨平台使用,兼容性较好,其获得的文件路径兼容于多个平台
13
14
print(os.path.exists())# 判断文件是否存在,不存在返回false,存在则返回true
15
16
print(os.path.isfile())# 判断是否是文件,返回值是true ,false
17
print(os.path.isdir())# 判断是否是文件夹,返回值依然是true和false
18
19
20
21
# ************比较重要和常用的功能
22
res = os.path.join(r'D:\prog\','11.py')# 拼接文件路径
23
res = os.path.join(r'D:\prog\','11.py','22.py')#可以同时拼接多个个文件的路径
24
                   
25
os.path.dirname(os.path.abspath(__file__))# 查询文件夹名称
26
                   
27
print(os.walk('文件路径'))#遍历当前文件夹所有的文件名,包括文件里里的所有子文件夹,
 
 

sys模块

sys模块的主要功能是与python解释器交互

 
 
 
xxxxxxxxxx
3
 
 
 
 
1
import sys
2
print(sys.argv)#接收参数,但只能在cmd使用python执行文件时运行,参数之间要用空格隔开,所以如果文件所在路径有空格的话要修改一下文件夹的名称 
3
print(sys.modules)#获取当前文件夹下的模块,及其路径
 
 

json模块

不同的语言所写的程序之间如果需要数据交互的话,就需要规定一种多重语言通用的数据类型,也就是json串。所以json模块可以把python的字典变成jaon串,同样可以把json串变成python的字典。因为字典类型是最常用也是功能最全数据类型,所以用字典来做转换,所以以后要注意这个。

 
 
 
xxxxxxxxxx
1
10
9
10
 
 
 
 
1
import json 
2
dic = {'a':1,'b':2,'c':None}
3
4
data = json.dumps(dic)# 可以序列化到内存中
5
print(data)# 单引号全部变成了双引号
6
7
data = json.loads(data)# 从内存中获取json串,并将其转成python字典的格式
8
print(data)
9
10
with open('test.json','w',encoding = 'utf8')as fw:
11
    json.dump(dic,fw)
12
with open('test.json','r',encoding = 'utf8')as fr:
13
    data = json.load(fr)
14
print(data)
 
 

需要注意的是json.dump后面加的是文件,和写入内容,而json.dumps后面加的是文件,也就是需要序列化的东西。

pickle模块

可以序列化python中的所有对象,数据类型,但是无法跨平台。

 
 
 
xxxxxxxxxx
1
20
 
 
 
 
1
dic = {'a':1,'b':'abc','c':None}
2
3
def func():
4
 x = 3
5
6
 def wrapper():
7
 print(x)
8
9
 return wrapper
10
11
12
import pickle
13
14
with open('test.pkl', 'wb')as fw:# 其实保存的只是一个函数名,并没有函数值,没有太大意义,因为并不能在别的文件里导入并调用这个函数,还是需要在需要调用该函数的文件的上面写入该函数。
15
pickle.dump(func, fw)
16
with open('test.pkl', 'rb')as fr:
17
data = pickle.load(fr)
18
print(data)
19
wrapper = data()
20
wrapper()
 
 

hashlib模块

主要起到密码加密的作用,但是是在以前的时候,现在的密码加密都比这个做的要高级,不过还是需要了解一下。

 
 
 
x
 
 
 
 
1
import hashlib
2
3
m = hashlib.md5()
4
5
m.update(b'hello')
6
print(m.hexdigest())  # 返回值长度都一样
7
m.update(b'123')
8
m.update(b'1 2 3')
9
m.update(b'567')  # 相同字符串哈希值总是相同的
10
11
12
# 1. 相同字符串哈希后结果一样,即便字符串中有空格也一样
13
# 2. 叠加性
 
 

hmac模块

也是对密码加密,不过hmac模块可以双重加密,比hashlib稍微好一点。

 
 
 
xxxxxxxxxx
1
 
 
 
 
1
import hmac
2
3
m = hmac.new(b'abc')# 这里的abc起到一个双重加密的作用,也就是秘钥的意思,只有这个对了,下面的密码才有意义,才可以被检测是否正确。
4
m.update(b'123')
5
m.update(b'456')
6
print(m.hexdigest())
7
8
# a 123456
9
# 123456
 
 

原文地址:https://www.cnblogs.com/Xu-PR/p/11365949.html