一、常用模块

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. vue技术栈

    1 vue 说明:vue生命周期:技术点:1:常用的API:computed,methods,props,mounted,created,components 2vue-cli说明:vue绞手架,用于 ...

  2. 百度 Apollo无人车平台增加传感器

    https://github.com/ApolloAuto/apollo/issues/1649 如果想加入一个新的传感器不是百度官方推荐的传感器到Apollo平台做法: First you can ...

  3. Java 线程间通信 —— 等待 / 通知机制

    本文部分摘自<Java 并发编程的艺术> volatile 和 synchronize 关键字 每个处于运行状态的线程,如果仅仅是孤立地运行,那么它产生的作用很小,如果多个线程能够相互配合 ...

  4. HashMap扩容后是否需要rehash?

    需要,因为要重新计算旧数组元素在新数组地址.HashMap在JDK1.8中的rehash算法(也就是扩容后重新为里面的键值对寻址的算法)进行优化.hash寻址算法是 index =(n - 1) &a ...

  5. 完整的 LDAP + phpLDAPadmin安装部署流程 (ubuntu18.04)

    LDAP 安装部署以及基础使用 因工作需求需要使用ldap管理用户权限,在踩了一系列坑之后,总结了一些流畅的文档,希望可以帮到和曾经的我一样迷茫的人. 基础环境:Ubuntu 18.04 一.安装 r ...

  6. bootstrap日期范围选择插件daterangepicker详细使用方法

    插件官方网站地址 bootstrap-daterangepicker是个很方便的插件,但是对我这种菜鸟来说,文档不够详细,摆弄了好久才整好.记录下来供以后参考,也希望能帮到有需要的朋友. 目前版本是2 ...

  7. (三)String、StringBuilder、StringBuffer在字符串操作中的性能差异浅析

    参考资料:https://www.iteye.com/blog/hank4ever-581463 <Core Java Volume I-Fundamentals>原书第十版 <Ja ...

  8. C++类的友元机制说明

    下面给出C++类的友元机制说明(对类private.protected成员访问),需要注意的是,友元机制尽量不用或者少用,虽然它会提供某种程度的效率,但会带来数据安全性的问题. 类的友元 友元是C++ ...

  9. Kubernetes Container lifecycle hooks

    简介 在kubernetes中,容器hooks旨在解决服务进程启动与停止时的一些优雅操作需求.比如说进程停止时要给进程一个清理数据的时间,保证服务的请求正常结束,而不是强行中断服务的运行,这样在生产环 ...

  10. Gym100923H Por Costel and the Match

    题目链接:http://codeforces.com/gym/100923/problem/H 分析:并查集,用enemy储存x的敌人,用weight储存权重决定根节点 需用scanf和puts输入输 ...