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. Hbash语句

    下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下:   名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名 ...

  2. 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) A】Palindrome Dance

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] i从1..n/2循环一波. 保证a[i]和a[n-i+1]就好. 如果都是2的话填上min(a,b)*2就好 其他情况跟随非2的. ...

  3. Android studio 自己主动排版

    一開始非常纠结于Android studio怎样有快捷键自己主动排版换行.找了网上非常多的快捷键并没实用.有说ctrl+shift+L的,我试了试全然没用.只是最后我还是找到了一个最好的办法.事实上有 ...

  4. 在eclipse中关联android源代码

    1打包源代码成jar: 1 新建一个java项目 2  import  想打包的源代码文件 3 export 这个文件 : 选择java->jar file .  这里会让你选择输出路径 2 加 ...

  5. poj1286 Necklace of Beads【裸polya】

    非常裸的polya,只是我看polya看了非常久 吉大ACM模板里面也有 #include <cstdio> #include <cmath> #include <ios ...

  6. 2015.05.11,外语,读书笔记-《Word Power Made Easy》 15 “如何谈论事情进展” SESSION 44

    1. not the real McCoy simulate(['simjuleit] v. 假装,冒充,模仿,模拟)来自拉丁simulo,copy的意思.simulo本身派生自拉丁形容词simili ...

  7. 42.写入XML

    #include <QtGui> #include <QtXml> #include <iostream> //创建一个树结构 void populateTree( ...

  8. 关于TCP的三次握手和四次分手 专题

    客户端TCP状态迁移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSE ...

  9. SwipeRefreshLayout的使用,下拉刷新

    1. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android ...

  10. jsp指令和学习笔记集锦

    Jsp包含三个编译指令和七个动作指令.三个编译指令为:page.include.taglib. 七个动作指令为:jsp:forward.jsp:param.jsp:include.jsp:plugin ...