一、模块
一个python文件就是一个模块,文件名称就是模块名。
1、模块分类:
标准库:python自带的,直接用import导入,例如random,json,os,datetime,string等
第三方模块:别人写好的,要安装才能导入的模块。安装方法:
1)pip install 模块名
2)使用pycharm安装,如图:
3)下载whl或tar.gz安装包进行安装
地址:https://pypi.org/project/redis/
以whl结尾的安装包:pip install 安装包名
以.tar.gz结尾的安装包:
解压这个压缩包
进入到这个解压之后的文件夹里面
在命令行里面运行 python setup.py install
自定义模块:自己写的python文件。(自己写的文件尽量不要和标准模块重名,调用时会优先调用自己写的文件)
2、导入模块
导入模块的实质:就是把这个python文件从头到尾执行一遍
import ddlog #导入模块
from ddlog import * #导入该模块中的所有方法,慎用
from ddlog import fun #就是把ddlog打开,然后把他它里面的fun方法拿过来使用
from ddlog import fun as xxx_fun #导入指定的方法,然后起别名
from ddlog import fun1,fun2,fun3 #导入模块下的多个方法
二、sys模块
sys用于解决Python运行时环境的不同问题.
import sys
print(sys.platform) #判断操作系统
#path获取python的环境变量
#sys.path.append(r'E:\syz\ly-code\day5')
# sys.path.insert(0,r'E:\syz\ly-code\day5')
print(sys.path) #获取python环境变量
print(sys.argv) #用来获取命令行里面运行python文件的时候传入的参数
print(sys.version) #获取Python解释程序的版本信息
三、os模块
用于提供系统级别的操作
#os对操作系统的一些操作
import os
print(os.getcwd())#取当前工作目录
os.chmod("x.py",2)#给文件/目录加权限,对Windows的下面不好使(1:执行,2:写,4:读)
print(os.chdir("../day5"))#更改当前目录
print(os.getcwd())
print(os.makedirs("nhy/python"))#递归创建文件夹,父目录不存在时创建父目录
print(os.mkdir("zll/diao"))#创建文件夹,父目录不存在时报错
# makedirs 创建文件夹的时候,如果父目录不存在会自动帮你创建父目录
print(os.removedirs("nhy/python"))#递归删除空目录
print(os.rmdir("test2"))#删除指定的文件夹,文件夹不存在时报错
os.remove("test2")#只能删除文件
os.rmdir('test2') #只能删文件夹
print(os.listdir('e:\\'))#列出一个目录下的所有文件
os.rename("test","test1")#重命名
print(os.stat("x.py"))#获取文件信息
print(os.sep)#当前操作系统的路径分隔符
print(os.linesep)#当前操作系统的换行符 \n \r\n
print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
print(os.environ)#当前系统的环境变量
print(os.name)#当前系统名称 Windows系统都是nt linux都是posix
res = os.system('ipconfig') #执行操作系统命令的,但是获取不到结果
res = os.popen('ipconfig').read() #可以获取到命令执行的结果
四、random模块
import random,string
random.random() # 随机浮点数,默认取0-1,不能指定范围
random.uniform(1,9) # 随机取浮点数,可以指定范围
random.randint(1,3) # 随机整数,包含1和3
random.randrange(0,101,5) # 随机生成一个整数,参数1为开始数字,参数2为结束数字,参数3为随机数字的倍数
random.choice('dsx') # 随机取一个元素,choice的参数可以是list、字符串、元组等
random.sample('dsx',2) # 随机从序列中取几个元素,参数可以是list、字符串、元组等
x = [1,2,3,4,6,7]
random.shuffle(x)#洗牌,打乱顺序,会改变原list的值
print(x)
print(string.ascii_letters+string.digits)#所有的数字和字母
五、time、datetime模块
time和datetime模块主要用于操作时间
时间有三种表示方式,一种是时间戳(通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量)、一种是格式化时间、一种是时间元组
import datetime,time
print(time.timezone)#和标准时间相差的时间,单位是s
print(time.sleep(1))#休息几s
print(time.time())#获取当前时间戳
print(time.gmtime())#把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
print(time.mktime(time.localtime()))#把时间元组转换成时间戳
print(time.strftime('%Y-%m-%d %H:%M:%S'))#将时间元组转换成格式化输出的字符串
print(time.strftime('%Y%m%d%H%M%S',time.localtime(1530436245 - 259200)))
print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组
print(time.struct_time)#时间元组
print(time.asctime())#时间元转换成格式化时间
print(time.ctime())#时间戳转换成格式化时间
import datetime
print(datetime.date.today()) #当天的日期,只有日期
print(datetime.datetime.today()) #当天的时间,有日期有时间
print(datetime.datetime.now())#当前时间格式化输出
print(datetime.date.today() + datetime.timedelta(days=10))#10天后的时间
print(datetime.datetime.now()+datetime.timedelta(3))#3天后的时间
print(datetime.datetime.now()+datetime.timedelta(-3))#3天前的时间
res = datetime.datetime.today() + datetime.timedelta(hours=-10,minutes=-20) #有日期有时间,取10小时前、20分钟前的时间
print(res.time()) #只取到时间
print(res.date())#只取到日期
print(res.timestamp()) #时间戳
print(res.strftime('%Y-%m %H:%M:%S'))#取到格式化好的时间
#1、时间戳转格式化好的时间
# 1、首先要把时间戳转成时间元组
# 2、再把时间元组转成格式化好的时间
def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
if timestamp:
time_tuple = time.localtime(timestamp) # 转成时间元组
return time.strftime(format,time_tuple) #把时间元组,转成格式化好的时间
return time.strftime(format)
#2、格式化好的时间,转时间戳,
#1、首先要把格式化好的时间 转成时间元组
#2、再把时间元组转成时间戳
def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'):
if format_time:
time_tuple = time.strptime(format_time, format)#把格式化好的时间,转成时间元组
return int(time.mktime(time_tuple))
return int(time.time())
六、hashlib模块
hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
import hashlib
s='123nhy456_++dfsdfsd'
# s.encode() 转化为bytes类型
m = hashlib.md5(s.encode()) #必须得传一个bytes类型的
print(m.hexdigest()) #获取到加密后的结果,16进制格式
print(m.digest()) #2进制格式
def myMd5(s):
s = str(s)
m = hashlib.md5(s.encode()) #必须得传一个bytes类型的
return m.hexdigest()
#md5不可逆
#所有一样的字符串,md5之后的结果都是一样的