一、常用模块

1.math数学模块

在计算机中,所有数值在计算机底层都是约等于机制,并不是精确地
import math #ceil() 向上取整操作
math.ceil(3.1)=>4
#floor() 向下取整操作
math.floor(3.9)=>3
#pow() 计算一个数值的n次方(结果为浮点型)
#sqrt() 开平方(结果浮点型)
#fabs() 计算绝对值(浮点型)
#modf() 数值拆分成整数和小数两部分组成元组
math.modf(-19.8)=>(-0.8000000000000007,-19.0)
#copysign() 将参数第二个数值的正负号拷贝给第一个
math.copysign(-90,-18)=>-90
#fsum() 将一个容器数据中的数据进行求个运算(浮点数)(对比内置sum函数)
#圆周率常数 pi
math.pi=>3.1415926≈3.1415927

2.随机模块

chr() 给ascii码返回对应的字符串

import random
#random() 随机0-1之间的小数(左闭右开)0<=x<1
random.random()
#randrage() 获取指定范围内的整数(包含开始值,不包含结束值,间隔值)同range()
random.rangrage(3,10,2)
#randint() 获取指定范围内的整数(可以去到最大值)
#uniform() 获取指定范围的随机小数(左闭右开)
#choice() 随机获取序列中的值(多选一)
#sample() 随机获取序列中的值(多选多)
#shuffle() 随机打乱序列中的值(直接打乱原序列)

3.内置函数

#abs()      绝对值函数
#round() 四舍五入(n.5 n为偶数则舍去 n.5 n为奇数,则进一)
# 奇进偶不进
val = 3.5 =>4
val = 4.5 =>4
var = 4.51 =>5
#sum 求和
#max 求最大值
#min 求最小值
lst = [("a",25),("b",18),("c",27)]
#求最小元组
def func(n):
return n[-1]#返回值是判断参考的依据
res = min(lst,key=func)
res=>("b",18) #pow 求x次方
pow(n,x,y)#求n的x次方 对y值取余
#range 产生指定范围数据的可迭代对象
#bin 将10进制数据转换成二进制
#oct 将10进制转换成八进制
01234567 8=>7+1=>0o10
#hex 将10进制转换成16进制
16 => 15+1 =>0x10
#chr ASCII编码转换成字符
(大小写字符相差32位,大写A=65 小写a=97)
#ord 将字符转换成ASCII
#金针使用eval 和exec 尤其是在和用户交互数据时候主义
#eval 将字符串当作python代码执行
#exec 将字符串当作python代码执行(功能更强)
strvar = """
for i in range(10):
print(i)
"""
exec(strvar)
#repr 不转义字符输出字符串(同r"ada")
#input 接收输入字符串
#hash 生成哈希值(number 字符串 tuple)
#hash生成哈希值作用:
1.密码加密:hashlib
2.文件比较 比较文件内容

4.序列化模块-pickle

序列化:把不能够存储在文件中的数据变的可存储,这个过程就是序列化
反序列化:把文件中的数据内容拿出来,恢复成原来的数据类型,这个过程叫反序列化
在文件中存储的数据,要吗是字符串,要吗是字节流
python中,所有数据类型都可以通过dumps和loads进行序列化 lst = [1,2,3] import pickle #dumps 把任意对象序列化成bytes
res = pickle.dumps(lst)
#loads 把任意bytes反序列化成原来数据
lst = pickle.loads(res) #dump 把对象序列化后写入file-like Object(既文件对象)
lst = [1,2,3]
with open("ceshi.txt",mode="wb") as fp:
pickle.dump(dic,fp)
#load 把file-like Object(既文件对象)反序列化后写入对象
with open("ceshi.txt",mode="wb") as fp:
res = pickle.load(fp)
print(res,type(res))

5.json模块

能够通过json序列化字符串的有如下类型:int float boo str list tuple dict None

# 1.json用法
import json
dic = {"name":"guo","age":30,"classroom":"python30"}
(1) dumps loads是一对
res = json.dumps(dic,ensure_ascii=false,sort_keys=true)
print(res,type(res)) #反序列化
dic = json.loads(res)
print(dic,type(dic)) (2)dump load,针对文件进行序列化操作
#dump序列化
with open("ceshi.txt",mode="w",encoding="utf-8") as fp:
json.dump(dic,fp,ensure_ascii=false)
#load反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)
print(dic,type(dic))

6.json pickle 区别

  1. json 可以连续dump,不可以连续load(load是一次性拿出所有数据进行反序列化,容易出错)
dic1 = {"name":"guo","age":30,"classroom":"python30"}
dic2 = {"name":"guo1","age":25,"classroom":"python31"}
with open("ceshi.txt",mode="w",encoding="utf-8") as fp:
json.dump(dic1,fp,ensure_ascii=false)
fp.write("\n")
json.dump(dic1,fp,ensure_ascii=false)
fp.write("\n")
#load反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
dic = json.load(fp)#报错
print(dic,type(dic)) #解决方式,使用loads。一行一行反序列化
with open("ceshi.txt",mode="r",encoding="utf-8") as fp:
#文件对象是迭代器。一次迭代一行
for i in fp:
dic = json.load(i)
print(dic,type(dic))
  1. pickle可以连续dump,可以连续load
dump进文件时,默认在最后加结束符
import pickle dic1 = {"name":"guo","age":30,"classroom":"python30"}
dic2 = {"name":"guo1","age":25,"classroom":"python31"}
with open("ceshi.txt",mode="wb",encoding="utf-8") as fp:
pickle.dump(dic1,fp)
pickle.dump(dic1,fp) #load反序列化
#方法一
with open("ceshi.txt",mode="rb",encoding="utf-8") as fp:
dic3 = pickle.load(fp)
print(dic3,type(dic3))=>dic1
dic4 = pickle.load(fp)
print(dic4,type(dic4))=>dic2 #方法二(一次性把文件中的数据都拿出来)
try:
with open("ceshi.txt",mode="rb",encoding="utf-8") as fp:
while true:
dic = pickle.load(fp)
print(dic,type(dic))
except:
pass

3.json序列化后的数据类型是str,所有编程语言都识别(int float bool str list tuple dict

None)json不能连续load,只能次异性拿出所有数据

4.pickle序列化之后的数据类型是bytes,所有数据类型都可转换,仅限于python之间的存储传输,pickle可以连续load,多套数据放到同一个文件中

7.time模块

时间戳
UTC时间
夏令时
#时间元组:
(年月日时分秒(0-59),周几(0-6),一年中的第几天,是否夏令时(0,1))
(tm_year,tm_month,tm)
#格式化时间字符串 import time #sleep() 程序睡眠等待(程序等待)******
#time() 获取当前的时间戳*******
#ctime() 获取本地时间字符串(参数是时间戳,默认当前)******
#localtime() 获取本地时间元组(参数是时间戳,默认当前)*****
#mktime() 通过时间元组获取时间戳(参数是时间元组)*****
#asctime() 通过时间元组获取时间字符串(参数是时间元组)(了解)
#strftime() 格式化时间字符串(格式化字符串,时间元组)
#strptime() 将时间字符串通过制定格式提取到时间元组中(时间字符串,格式化字符串)
#perf_counter() 用于计算程序运行的时间

日历模块

8.os shutil模块(系统命令)

对系统进行操作
import os
#system() 在python中执行系统命令
os.system("calc") //计算器
os.system("ipconfig") //gbk格式,出现乱码
#popen() 执行系统系统命令返回对象,通过read方法读取出字符串
obg = os.popen("ipconfig") //
#windows默认gbk编码,通过read方法可以直接转换成utf-8编码集
onj.read()
#listdir() 获取指定文件夹所有内容的名称列表
# 路径:相对路径 ,绝对路径
# . 代表当前目录 ..代表上一级目录 res = os.listdir()=》["a.txt","b,txt","day1"] #getcwd() 获取当前文件所在的默认路径
#chdir() 修改当前文件工作的默认路径
#environ() 获取和修改环境变量
os.environ()
#将路径添加到环境变量中,再执行命令时,通过路径去找对用的路径,进行执行
os.environ["Path"] +=r"d:\qq\bin;"
#--os模块属性
#--name 获取系统标识 linux,max->osix windows->nt
#--sep 获取路径分割符号 linux,mac->/ window->\
#--linesep 获取系统的换行符号 linux,mac->\n window->\rrn or \n

os shutil模块

os 创建和删除 文件和文件夹

shutil 复制和剪切 文件和文件夹

#--os
#os.mknod 创建文件(linux可以,windows有兼容)
#os.remove 删除文件
#os.mkdir 创建目录
#os.rmdik 删除目录
#os.rename 重命名文件
os.rename("原","重命名")
#os.makedirs 递归创建文件夹
os.makedirs("a/b/c/d")
#os.removedirs 递归删除文件夹
os.removedirs("a/b/c/d") #--shutil模块
import shutil #shutil.copy(src,dst) 复制文件权限和内容
#shutil.copytree(src,dst) 拷贝文件夹里边的所有内容(递归拷贝)
#rmtree(path) 删除当前文件夹及其中所有内容(递归删除)
#move(path1,path2) 移动文件和文件夹

os.path路径模块

import os

pathvar = r"e:\day\abc.py"
#basename() 返回文件名部分 *****
os.path.basename(pathvar)
#dirname() 返回路径部分 *****
#split() 将路径拆分成单独的文件部分和路径部分,组合成一个元组 *****
#join() 多个路径和文件组成新的路径,可以自动通过不同的系统加不同的斜杠 *****
#splitext() 讲路径分割为后缀和其他部分 *****
#getsize() 获取文件的大小 *****
#isdir() 是否是文件夹 *****
#isfile() 是否是文件 *****
#islink() 监测路径数是否一个链接 ***** ***记忆
#getctime() windows文件的创建时间,linux权限的改动时间
#getmtime() 文件最后一次修改时间(返回时间戳)
#getatime() 获取文件最后一次访问时间(返回时间戳)
#exists() 监测指定的路径是否存在 *****
#isads() 监测指定的路径是否绝对路径
#abspath() 将相对路径转换成绝对路径

9.zifilep、tarfile压缩模块

zip

import zipfile

1.压缩文件
a.创建压缩包
zf = zipfile.ZipFile("ceshi.zip","w",ZIP_DEFLATED)
b.写入
#write(“路径”,别名)
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
c.关闭压缩文件
2.解压文件
zf = zipfile.ZipFile("ceshi.zip","r")
zf.extractail("./ceshi1")//解压所有
zf.extract("1.txt","./ceshi2")#解压单个
zf.close()
3.追加文件
zf = zipfile.ZipFile("ceshi.zip","a",ZIP_DEFLATED)
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片3")
zf.close() with zipfile.ZipFile("ceshi.zip","a",ZIP_DEFLATED) as zf:
zf.write(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片3") 4.查看文件 with zipfile.ZipFile("ceshi.zip","r",ZIP_DEFLATED) as zf:
lst = zf.namelist()

tar(.tar | .tar.gz | .tra.bz2)

官方说法:tra.bz2的压缩算法,爆的大小最小

import tarfile

1.创建tar压缩包
#--tar
tf = tarfile.open("ceshir1.tar","w",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close() #--tra.gz
tf = tarfile.open("ceshir1.tar.gz","w:gz",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close() #--tra.bz2
tf = tarfile.open("ceshir1.tar.bz2","w:bz2",encoding="utf-8")
#add(路径,别名)
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片1")
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","临时文件夹\旧照片1")
tf.close()
2.解压文件
tf = tarfile.open("ceshir1.tar","r")
tf.extractail("./ceshi1")//解压所有
tf.extract("1.txt","./ceshi2")#解压单个
tf.close()
3.追加文件
# 只能对w模式下的打包进行追加,其他模式不行,无法对已经压缩好的文件无法追加
with tarfile.open("ceshir1.tar","a") as tf:
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片15")
#对tar.gz or tar.bz2已经压缩过的包无法追加文件
with tarfile.open("ceshir1.tar.gz","a") as tf:
tf.add(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果","旧照片15") 4.查看文件
with tarfile.open("ceshir1.tar","r",encoding="utf-8") as tf:
lst = tf.getnames() ##--解决tarfile 不能追加文件的bug,进行优化
tarfile的解决方法
1.先解压原来的压缩包
import os
pathvar = os.getcwd()
//压缩包的路径
pathvar1 = os.path.join(pathvar,"ceshir1.tar.bz2")
//解压文件夹的路径
pathvar2 = os.path.join(pathvar,"ceshir1")
//解压压缩包
with tarfile.open(pathvar1,"r",coding="utf-8") as tf:
tf.extractall(pathvar2)
2.把要追加的内容追加进去
import shutil
shutil.copy(r"H:\BaiduNetdiskDownload\PS教程 旧照片效果\a.png",pathvar2)
3.过滤数据,重新打包
lst = os.listdir(pathvar2)
with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf:
for i in lst:
pathnew = os.path.join(pathvar2,i)
if i!="222":
tf.add(pathnew,i)

二、模块与包

文件就是一个模块,文件夹就是一个包

1、导入模块

使用import 导入 使用 as 取别名

1.模块.变量

2.模块.函数

3.模块.类

# 导入任意路径下的模块
#通过sys.path可以导入任意路径下的模块
import sys
print(sys.path)
sys.path.apped(r"e:\abc")

** from ... import...**

from mymodule  import a
from mymodule import a,b,c
from mymodule import *
# 起别名
from mymodule import a as aa,b,c
# 定制的*的范围
__all__ = ""//可以被*调用的 # __name__(返回模块名称的魔术属性)
# 如果当前模块是直接运行的返回 __main__
# 如果是被导入运行的,返回模块名
# 可以用来做测试
# 防止当作为模块导入时,下面的代码被执行,下面代码是做测试,不需要导入
if __name__ == "__main__" :
code块

2.导入包

__init__.py 对包进行初始化的脚本文件
导入包,系统自动调用_init_文件,当前文件夹初始化,实际上是是对init中的文件属性进行导入 init:
ceshi1=1
ceshi2=2 # 1.导入包,通过init文件初始化,默认引入init文件中所有属性
import package1
# 2.引入包中具体一个模块:包名.模块.成员
#方法一
import package1.mypath
package1.mypath.join()
import package1.mypath as pm
pm.join()
#方法二
import package1
package1.mypath.join()//报错,因为没有引入mypath模块
在init中引入mypath模块
init:
from package1 import mypath
package1.mypath.join() # 3.用from ... import... 导入包
from package1 import mypath
mypath.func()
from package1.mypath import func
func()

3.单入口模式(相对路径导入)

# 当前文件如果含有相对路径,是不能够直接执行的
# 通过导入到入口的启动文件中,在这个主文件中,能够识别到对应的相对路径
# from ... import 落脚点在于引入的模块或者模块中的成员 # .代表当前层级 ..代表上一级

三、python学习-常用模块的更多相关文章

  1. python学习——常用模块

    在学习常用模块时我们应该知道模块和包是什么,关于模块和包会单独写一篇随笔,下面先来了解有关在python中的几个常用模块. 一.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文 ...

  2. Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...

  3. python的常用模块之collections模块

    python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...

  4. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台

  5. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  6. Python学习——python的常用模块

    模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...

  7. python(五)常用模块学习

    版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...

  8. Python学习【第6篇】:Python之常用模块1

    常用模块一. collocations 模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二:这些模块和面向对象有关 hashlib模块 configparse模块 ...

  9. Python之常用模块学习(二)

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

随机推荐

  1. NGK公链大事件盘点——回顾过去,展望未来!

    NGK公链构想广阔,愿景宏大,2020年10月NGK正式上线,同时NGK全球发布会正式启动,建立区块链生态体系. 早在这之前,NGK就经过了紧锣密鼓的数年缜密搭建. 2018年6月NGK底层系统技术原 ...

  2. 一条sql语句的执行过程

    一条select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接.获取权限.维持和管理连接.如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限.之后该连接的权限验证都依赖于刚查出来 ...

  3. 喜忧参半的SQL Server触发器

    SQL Server触发器在非常有争议的主题.它们能以较低的成本提供便利,但经常被开发人员.DBA误用,导致性能瓶颈或维护性挑战. 本文简要回顾了触发器,并深入讨论了如何有效地使用触发器,以及何时触发 ...

  4. tep环境变量、fixtures、用例三者之间的关系

    tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地. 在tep项目中,自动化测试用例都是放到tests目录下的,每个 ...

  5. Python镜像源集合——镜像源更改方法

    python在线安装库时会较慢,那是因为python的默认镜像源在国外,因此会慢:而国内有很多可以用的python镜像源,将python镜像源更改为国内的,则可以大大加快python库的安装速度. 1 ...

  6. GetQueuedCompletionStatus客户端前端和server之间的通信

    项目中遇到了这个东西,怎么都调试不到.记录下. 一.完成端口IOCP https://www.cnblogs.com/yuanchenhui/p/iocp_windows.html

  7. 后端程序员之路 41、BlockingQueue

    BlockingQueue,阻塞队列,常用于实现生产者和消费者模型特点:1.队列为空时,取操作会等到队列有数据2.队列满时,存操作会等到队列可用 基于C++11的阻塞队列简单实现 - Cynric 的 ...

  8. go mod管理 init 和 包导入的关系

    你创建了一个文件的名字为:lisi001 如果你初始化项目名字为lisi, go mod init lisi 那么你导包的时候就得也用lisi import ( "lisi/path&quo ...

  9. 《进击吧!Blazor!》系列入门教程 第一章 6.安全

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  10. 因MemoryCache闹了个笑话

    前言 是这么一回事: 我正在苦思一个业务逻辑,捋着我还剩不多的秀发,一时陷入冥想中...... 突然聊天图标一顿猛闪,打开一看,有同事语音: 大概意思是:同事把项目中Redis部分缓存换成Memory ...