python你必须知道的那些模块

一:模块导入

一个py文件也属于一个模块
举例说明(例如导入OS模块):
1:import os
2:from os.xx.xx import * #不建议使用,不易区分不同模块相同函数出自哪个模块
3:from os.xx.xx import xx as rename
4:from module import xx

自定义模块:
创建一个py文件,写入自定义函数。在另一个py文件中调用。调用自定义模块时要注意路径,同一路径下调用。

自定义模块module:
在这里插入图片描述
在module2.py文件中调用module在这里插入图片描述
执行结果:
在这里插入图片描述

二:模块安装

快速上手模块安装方法
pip 使用豆瓣源
pip 使用豆瓣源
由于pip 默认使用Python的官方源pypi.python.org/pypi,导致我们经常使用pip装包时速度过慢或者无法安装(请求超时)等问题,
所以国内用户建议使用pip 国内源。
目前常用的 pip 国内源有:

豆瓣:http://pypi.douban.com/simple/(推荐)
清华:http://pypi.tuna.tsinghua.edu.cn/simple

提示:Python3默认已经再带pip
如果没有安装pip包,可以官网下载get-pip.py文件,然后执行安装命令:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py -i http://pypi.douban.com --trusted-host pypi.douban.com

三:用time&datetime模块

常用time模块显示时间戳,datetime模块显示多少多少时间,显示日期类的
我们常常打代码要与时间打交道,常用的时间模块:time,datetime,calendar(很少用,较少使用)

我们写时间对时间处理共分为三种:
1:时间的显示:在屏幕显示,记录日志等
2:时间的转换:比如把字符串日期转换为python里面的日期
3:时间的运算:计算两个时间的差值等

python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

time模块的方法:
time.localtime([secs]):将一个时间戳转换成当前时区的struct_time.若secs参数未提供,则以当前时间为准。
time.gmtime([secs]):和localtime()方法类似,gmtime()方法是一个将一个时间戳转换为UTC时区(0时区)的struct_time.
time.time():返回当前时间戳。
time.mktime(t):将一个struct_time转化为时间戳。
time.sleep(secs):线程推迟指定时间运行,单位为秒。
1:time.altzone
返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
2 time.asctime([tupletime])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
3 time.clock( )
用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
4 time.ctime([secs])
作用相当于asctime(localtime(secs)),未给参数相当于asctime()
5 time.gmtime([secs])
接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
6 time.localtime([secs])
接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
7 time.mktime(tupletime)
接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。
8 time.sleep(secs)
推迟调用线程的运行,secs指秒数。
9 time.strftime(fmt[,tupletime])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
10 time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’)
根据fmt的格式把一个时间字符串解析为时间元组。
11 time.time( )
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
12 time.tzset()
根据环境变量TZ重新初始化时间相关设置。

datetime:
1:datetime.date:表示日期的类,常用有year,mouth,day
2:datetime.time:表示时间的类。
3:datetime.datetime:表示日期时间。
4:datetime.timedelta:表示时间间隔,即两个时间之间的长度。
5:datetime.tzinfo:与时区有关的相关信息。

时间运算:datetime.timedelta()
在这里插入图片描述

四:随机数模块random

随机数其实有很多用,比如登录程序需要输入验证码,其实就是程序在避免你写代码自动登录,验证码图片一般比较模糊就是为了干扰你通过代码识别验证码,防止代码登录,类似爬虫爬取信息。

创建文件名时尽量避免文件名与模块名一致,不然导入的时候会导入你自己写的代码即当前文件,会报错。

常用方法:

import random
print(random.randint(10,100))#返回10-100之间的一个随机数,包括100
print(random.randrange(10,100,3))#返回一个10-100之间的奇数,不包括100
print(random.random())#返回一个随机浮点数
print(random.choice('asdhjhk1263'))#返回一个给定数据集合中的随机字符
print(random.sample('asdhjhk1263',3))#从多个字符中选区特定数量的字符

结果:
在这里插入图片描述

常用案列:

#生成随机字符串
import string
print(string.ascii_lowercase)#打印所有小写英文字母
print(string.digits)#打印所有数字
print(string.ascii_lowercase+string.digits)#连接
print(''.join(random.sample(string.ascii_lowercase+string.digits,6)))


#洗牌
a=list(range(10))
random.shuffle(a)
print(a)

结果:
在这里插入图片描述

五:序列化pickle&json模块

pickle&json模块都是为了序列化,pickle是python的专属,所有数据类型都能用,json 在各个语言都可以用且只能用常规数据类型,pickle一个文件可以dump&load多次,json 一个文件只能一次。常用json

dump 写入文件
dumps生成序列化字符串

load从文件加载
loads把序列化的字符串反向解析
import pickle
d={
    "name":"灵魂玩家",
    "role":"police",
    "blood":"79",
    "weapon":"AK47"
}
alive_players=["灵魂玩家","不服来战","海底深处"]

print(pickle.dumps(d))#序列化
d_dump=pickle.dumps(d)
print(pickle.loads(d_dump))#反序列化转化为字典类型

在这里插入图片描述

六:hashlib加密

HASH:把任意长度输入,通过散列算法,变换成固定长度输出,该输出就是散列值。这种转换是一种压缩映射。也就是,散列值的空间通常远小于输入空间不同的输入,可能会散列成相同的输出,而不可能的散列值来唯一的确定输入值。

MD5:
在这里插入图片描述
在这里会引伸出撞库,穷举,脱库,加盐几个热词
撞库是什么
穷举的秘密
脱库
密码加盐

#hashlib加密
import hashlib
m=hashlib.md5()
m.update("祝祝".encode("UTF-8"))
print(m.hexdigest())#消化

在这里插入图片描述

SHA-1:
在这里插入图片描述
在这里插入图片描述

#hashlib加密
import hashlib
#md5
m=hashlib.md5()
m.update("祝祝".encode("UTF-8"))
print(m.hexdigest())#消化


#sha1
s1=hashlib.sha1()
s1.update("我们都一样,和你一样温和不计较".encode("UTF-8"))
print(s1.hexdigest())


#sha256(用的最多)
s256=hashlib.sha256()
s256.update("一切都会变好,诸事顺利".encode("utf-8"))
print(s256.hexdigest())


#sha512
s512=hashlib.sha512()
s512.update("能力就是底气".encode("utf-8"))
print(s512.hexdigest())

在这里插入图片描述

七:文件copy模块shutil

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件压缩

shutil.make_archive(base_name, format[, root_dir[, base_dir, verbose, dry_run, owner, group, logger])

base_name:压缩包的文件名,也可以是压缩包的路径;只是文件名时,则保存至当前目录下,否则保存至指定路径;
format:压缩包种类,“zip”, “tar”, “bztar”,“gztar”;
base_dir:指定要压缩文件的路径,可以指定路径下的文件名,也可以指定路径;
root_dir:指定要压缩的路径根目录(默认当前目录),只能指定路径,优先级低于base_dir。

在这里插入图片描述
在这里插入图片描述

tarfile 只打包不压缩,zipfile又打包又压缩

import shutil

shutil.copyfileobj(open("time.py",encoding='utf-8'),open("time1.py","w"))#需要先打开文件
shutil.copyfile("time.py","time1.py")#copy文字,并覆盖文件内容
shutil.copymode("time.py","json1.py")#不复制内容,只复制时间,状态
shutil.copystat("time.py","json1.py")
shutil.copy("time.py","json1.py")#复制内容状,日期没变
shutil.copy2("time.py","json1.py")#复制内容状,日期也复制
shutil.copytree("../.idea","常用模块代码")#复制目录,
shutil.make_archive(base_name="E:\PY\常用模块",
                    format="zip", root_dir="../",
                    owner="root")#压缩文件


#文件目录压缩:
import zipfile

z=zipfile.ZipFile("test.test","w")
z.write("json1.py")
z.write("module.py")


filelist=[]
for root_dir,dirs,files in os.walk("常用模块/my_proj"):
    for filename in files:
        filelist.append(os.path.join(root_dir,filename))
for i in filelist:
    print(i)
    z.write()
z.close()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Recently 祝祝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值