python--(常用模块-1)

一.模块的简单认识:

  什么是模块,模块就是我们把装有特有功能的代码进行归类的结果,从代码编写的单位来看我们的程序,从小到大的顺序:一条代码<语句块<代码块(函数,类)<模块.我们目前写的所有的py文件都是模块.

  引入模块的方式:

    1,import模块

    2,forom xxx import模块

二.collections模块

  1,Counter是一个计数器.主要用来计数

    计算一个字符串中每个字符出现的次数:

 from collections import Counter #引入模块,计数器
# c = Counter #创建起来和字典差不多
list = ["周杰伦", '周杰伦', "孔辉", "大阳哥", "大阳哥", "刘伟", "刘伟"]
c = Counter(list) #建一个counter对象
print(c)
print(c["孔辉"])

counter

    

 2.deque双向队列.
""" 1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头
2. 队列: FIFO. 先进先出 -> 买火⻋票排队 所有排队的场景
"""
 from collections import deque
d = deque() #创建双向队列
d.append("李茶的姑妈") # 默认在右侧添加
d.append("无双")
d.append("影")
d.append("找到你")
#让悲伤逆流成河, 理查的姑妈, 无双, 影, 找到你
print(d)
d.appendleft("让悲伤逆流成河") # 左侧添加
print(d) print(d.pop()) # 从右边删除
print(d.pop()) # 从右边删除
print(d.popleft()) # 从左边删除
print(d.pop()) # 从右边删除
print(d)

deque双向队列

 # 队列: 先进先出.  First In First Out FIFO
# 栈: 先进后出. First In Last Out FILO
import queue
# q = queue.Queue() # 创建队列
# q.put("刘伟") # 放入元素
# q.put("大阳哥")
# q.put("吴佩琪")
#
# print(q.get()) # 获取元素
# print(q.get())
# print(q.get())
# print(q.get()) # 阻塞了. 在等下一个元素, input() # 装馒头的桶
# 1. 入栈
# 2. 出栈
# 属性: 1. 列表(容器) 2.大小(size) 3. 栈顶指针(下一个装元素的位置)
class StackFullError(Exception):
pass
class StackEmptyError(Exception):
pass
class Stack:
def __init__(self, size):
self.index = 0 # 栈顶指针
self.size = size
self.lst = [] # 容器 def push(self, el):
if self.index < self.size: # 还没有装满
self.lst.insert(self.index, el)
self.index += 1
else: # 装满了
raise StackFullError("the stack is full!") def pop(self):
if self.index > 0:
self.index -= 1
return self.lst[self.index]
else:
raise StackEmptyError("the stack is empty!") # 使用
# 1.实例化栈
s = Stack(5)
s.push("馒头1")
print(s.pop())
s.push("馒头2")
print(s.pop())
s.push("馒头3")
print(s.pop())
s.push("馒头4")
print(s.pop())
s.push("馒头5")
print(s.pop())
s.push("馒头6")
print(s.pop())

栈和队列


 3. namedtuple 命名元组
命名元组, 顾名思义. 给元组内的元素进⾏命名. 比如. 我们说(x, y) 这是一个元组. 同
时. 我们还可以认为这是一个点坐标. 这时, 我们就可以使用namedtuple对元素进命名
 from collections import namedtuple
#自己定义一个元祖,如果灵活性好,这就是创建了一个类
nt = namedtuple("point",["x","y"])
p = nt(1,2)
print(p) print(p.x)
print(p.y)

namedtuple 命名元祖

  

 4.orderdict和defaultdict
orderdict顾名思义.字典的key默认是无序的.而OrderedDict是有序的
 dic = {"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"}
print(dic) from collections import OrderedDict
od = OrderedDict({"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"})
print(od)

orderdict

  

   defaultdict:可以给字典设置默认值.直接获取默认值:
 from collections import defaultdict
d = defaultdict(list) # {} list() 必须是callable
d['刘伟'] = "奥特曼"
print(d['孔辉']) # 当key不存在的时候. 返回默认值.其实就是callable()
print(d['刘伟'])

defaultdict

三.time时间模块(重点)
    

    1. 时间戳(timestamp). 时间戳使⽤的是从1970年01月01日 00点00分00秒到现在
    一共经过了多少秒... 使用float来表示
    2. 格式化时间(strftime). 这个时间可以根据我们的需要对时间进⾏任意的格式化.
    3. 结构化时间(struct_time). 这个时间主要可以把时间进⾏分类划分. 比如. 1970
    年01月01日00点00分00秒 这个时间可以被细分为年 ,月,日...一堆东西

 import time
print(time.time()) #时间戳,给机器用的
print(time.strftime("%Y/%m/%d %H:%M:%S")) #格式化时间给人看的
print(time.localtime()) #结构化时间,用来计算的 # 时间戳 -> 格式化时间 or 结构化
import time t = time.localtime(1888888888) # 结构化时间
print(t)
s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间
print(s)
#格式化时间 ->时间戳
import time
s = "2029-11-09 11:21:28" st = time.strptime( s ,"%Y-%m-%d %H:%M:%S")
t = time.mktime(st)
print(t)

    日期化的标准:

 %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 当前时区的名称
%% %号本身

计算时间差

 import time
true_time = time.mktime(time.strptime("2017-09-11 08:30:00","%Y-%m-%d %H:%M:%S"))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.localtime(dif_time)
print(struct_time)
print('过去了%d年%d⽉%d天%d⼩时%d分钟%d秒'%(struct_time.tm_year-
1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,
struct_time.tm_min,struct_time.tm_sec))

代码

四.random模块
所有关于随机的内容都在random模块中.
 import random

 print(random.random())  #0-1小数
print(random.uniform(3,10)) #3-10小数 print(random.randint(1,10)) #1-10整数
print(random.randrange(1,10,2)) #1-10奇数 print(random.choice([1,"周杰伦",["盖伦","胡辣汤"]])) # 列表中任意一个数
print(random.sample([1,"",[4,5]],2)) #1或者23或者[4,5]) lst = [1,2,3,4,5,6,7,8]
random.shuffle(lst) #随机打乱顺序
print(lst)

random


五.os模块

  所有和操作系统相关的内容都在os模块

 os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若⽬录为空,则删除,并递归到上一级目录,如若也为空,则删
除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中
rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件子目录,包括隐藏文件,并以列表方式
打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command).read() 运行shell命令,获取执行结果
os.getcwd() 获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径
os.chdir("dirname") 改变当前脚本⼯作⽬录;相当于shell下cd
# os.path
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成⽬录和⽂件名⼆元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的⽂件名。如何path以/或\结尾,那么就会返回空值。
即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是⼀个存在的⽂件,返回True。否则返回False
os.path.isdir(path) 如果path是⼀个存在的⽬录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第⼀个绝对路径之前的参将被忽略
os.path.getatime(path) 返回path所指向的⽂件或者⽬录的最后访问时间
os.path.getmtime(path) 返回path所指向的⽂件或者⽬录的最后修改时间
os.path.getsize(path) 返回path的⼤⼩
# 特殊属性:
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
osname 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'

os模块相关

  

os.stat()属性解读: 

 stat 结构:
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备
st_nlink: inode 的链接数。
st_uid: 所有者的⽤户ID。
st_gid: 所有者的组ID。
st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后⼀次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在
其它系统上(如Windows)是创建时间(详细信息参⻅平台的⽂档)。

os.stat()

六.sys模块

  所有和python解释器相关的都在sys模块中.

 sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值
sys.platform 返回操作系统平台

sys模块


 
 

  

python--(常用模块-1)的更多相关文章

  1. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  2. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  3. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  4. python——常用模块

    python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的 ...

  5. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  6. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

  7. python常用模块之时间模块

    python常用模块之时间模块 python全栈开发时间模块 上次的博客link:http://futuretechx.com/python-collections/ 接着上次的继续学习: 时间模块 ...

  8. python常用模块之subprocess

    python常用模块之subprocess python2有个模块commands,执行命令的模块,在python3中已经废弃,使用subprocess模块来替代commands. 介绍一下:comm ...

  9. python常用模块之string

    python常用模块string模块,该模块可以帮我们获取字母.数字.特殊符号. import string #打印所有的小写字母 print(string.ascii_lowercase) #打印所 ...

  10. python常用模块-调用系统命令模块(subprocess)

    python常用模块-调用系统命令模块(subprocess) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. subproces基本上就是为了取代os.system和os.spaw ...

随机推荐

  1. Django安装部署

    MVC模式说明 Model:是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据 View: 是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的 Controlle ...

  2. Zepto.js实现fadeIn,fadeOut功能

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. Zepto的设计目的是提供 jQuery 的 ...

  3. 【AIM Tech Round 5 (rated, Div. 1 + Div. 2) A】 Find Square

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找到左上角.往下一直走,往右一直走走到B边界就好. 中点的话.直接输出中位数 [代码] #include <bits/stdc ...

  4. CF899A Splitting in Teams

    CF899A Splitting in Teams 题意翻译 n个数,只有1,2,把它们任意分组,和为3的组最多多少 题目描述 There were nn groups of students whi ...

  5. 结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代

    结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代 蓬勃发展的即时通信产业 即时通信(IM)是指可以即时发送和接收互联网消息等的业务. 即时通信.就是瞬间把信息发送给对方,假设不是即时 ...

  6. iOS_第3方类库MBprogressHUD

    1,将下载好的第3方类库MBprogressHUD源代码包增加到project(事实上就是一个.h和.m文件) 2,进入project的Build Phases,将源代码包里面的所有.m文件所有加入到 ...

  7. Oracle在Linux下的性能优化

    Oracle数据库内存参数的优化 Ø       与oracle相关的系统内核参数 Ø       SGA.PGA参数设置   Oracle下磁盘存储性能优化 Ø       文件系统的选择(ext2 ...

  8. 【HNOI 2004】宠物收养所

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1208 [算法] 建两棵平衡树维护领养者和宠物的特点值,这两棵平衡树支持 插入删除,查 ...

  9. ITWorld:2014年全球最杰出的14位编程天才

    近日,ITWorld 整理全球最杰出的 14 位程序员,一起来看下让我们膜拜的这些大神都有哪些?(排名不分先后) 1.Jon Skeet 个人名望:程序技术问答网站 Stack Overflow 总排 ...

  10. Spring《四-一》解决自动装配的问题

    自动化装配使得研发减少了响应的指配工作,但是使得响应的检查难以完成. 解决方法: simple模式: <bean autowire="autodetect" dependen ...