在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典

namedtuple

from collections import namedtuple
Point = namedtuple('point',['x','y','z'])
p1 = Point(3,2,1)
p2 = Point(1,2,3)
print(p1.x)
print(p1.y)
print(p1)
print(p2.x)
print(p2.y)
print(p2)
Card = namedtuple('card',['suits','number'])
c1 = Card('红心',2)
print(c1)
print(c1.number)
print(c1.suits)

deque

from collections import deque
dq = deque([1,2])
dq .append('a') #从后面放数据 [1,2,'a']
dq .appendleft('b') #从前面放数据['b',1,2,'a']
dq.insert(2,3) #['b',1,3,2,'a']
print(dq.pop()) #从后面取数据
print(dq .popleft()) #从前面取数据 a
b

# OrderedDict

from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
# dict的Key是无序的 {'a': 1, 'c': 3, 'b': 2}
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)
# OrderedDict的Key是有序的 OrderedDict([('a', 1), ('b', 2), ('c', 3)])

# defaultdict

from collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)
for value in values:
if value>66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)

使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'

Time模块

'''
表示时间的三种方式 在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。 (2)格式化的时间字符串(Format String): ‘1999-12-06’ (3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等) 字符串---格式化时间:给人看的
时间戳时间---float时间,给计算机看的
结构化时间---元祖:计算用的 python中时间日期格式化符号:
%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
# time.sleep(100)
# print(time.time())
# print(time.strftime("%Y-%m-%d %X"))
# print(time.strftime("%Y-%m-%d %X"))
# print(time.strftime("%Y-%m-%d %H-%M-%S")) #year month day HOUR MINUTE SECOND
# print(time.strftime("%Y/%m/%d %b %a %H-%M-%S %j")) #year month day HOUR MINUTE SECOND
# struct_time = time.localtime()
# print(struct_time)
# print(struct_time.tm_year) import time
#时间戳和结构化时间
# t = time.time()
# print(t)
# print(time.localtime(3049063158))
# print(time.gmtime(t))
# print(time.mktime(time.localtime()))
#结构化时间-->字符串时间
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(3000000000)))
# #字符串时间-->结构化时间
# print(time.strptime("2000-03-16","%Y-%m-%d"))
#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
# time.asctime(time.localtime(1500000000))
# 'Fri Jul 14 10:40:00 2017'
# time.asctime()
# 'Mon Jul 24 15:18:33 2017' #时间戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串
# time.ctime()
# 'Mon Jul 24 15:19:07 2017'
# time.ctime(1500000000)
# 'Fri Jul 14 10:40:00 2017' random模块
import random
#随机小数
# random.random() # 大于0且小于1之间的小数
# 0.7664338663654585
# random.uniform(1,3) #大于1小于3的小数
# 1.6270147180533838
#恒富:发红包 #随机整数
# random.randint(1,5) # 大于等于1且小于等于5之间的整数
# random.randrange(1,10,2) # 大于等于1且小于10之间的奇数 #随机选择一个返回
# print(random.choice([1,'23',[4,5]])) # #1或者23或者[4,5]
#随机选择多个返回,返回的个数为函数的第二个参数
# random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合
# [[4, 5], '23'] #打乱列表顺序
# item=[1,3,5,7,9]
# random.shuffle(item) # 打乱次序
# item
# [5, 1, 3, 7, 9]
# random.shuffle(item)
# item
# [5, 9, 7, 1, 3] # 生成随机验证码
import random def v_code():
code = ''
for i in range(5):
num=random.randint(0,9)
alf=chr(random.randint(65,90))
add=random.choice([num,alf])
code="".join([code,str(add)])
return code print(v_code())
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的大小
# print(os.getcwd())
# os.chdir(r'D:\Python\PY\9python')
# print(os.getcwd())
# print(os.curdir)
# print(os.pardir)
# os.makedirs('os1/os2') #创建目录
# os.removedirs('os1/os2') #递归删除目录
# os.mkdir('dirname') #创建文件夹
# os.rmdir('dirname')
# print(os.listdir(r'D:/Python/PY/9python')) #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
# print(os.stat('time模块.py') ) #获取文件/目录信息
# print(os.sep)
# os.system('dir') #运行shell命令,直接显示
# ret = os.popen('dir').read() #运行shell命令,获取执行结果
# print(ret)
# print(os.path.split(os.getcwd())) #将path分割成目录和文件名二元组返回
# print(os.path.dirname(os.getcwd()))
# print(os.path.isfile(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py')) #如果path是一个存在的文件,返回True。否则返回False
# print(os.path.join(r'c:','user','local')) # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
# print(os.path.getatime(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py')) #返回path所指向的文件或者目录的最后访问时间
#print(os.path.getmtime(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py')) #返回path所指向的文件或者目录的最后修改时间
#print(os.path.getsize(os.path.join(os.getcwd(),'os模块.py'))) #返回path的大小

sys模块

import sys
# print(sys.platform) #返回操作系统平台名称
# print(sys.version) #获取Python解释程序的版本信息
# sys.exit() #退出程序,正常退出时exit(0),错误退出sys.exit(1)
# print(sys.path) #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
ret = sys.argv
name = ret[1]
pwd = ret[2]
if name == 'tim' and pwd =='tim123':
print('login on')
else:
print('fail')
sys.exit()
print('gogog')

Python9-模块1-day19的更多相关文章

  1. python学习 day19 configparser模块 os模块 subprocess模块

    上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...

  2. day19 python模块 json模块 pickle模块

    day19 python   一.序列化模块     序列类型: 列表 字符串 元组 bytes     序列化: 特指字符串和bytes, 就是把其他的数据类型转化成序列的数据类型的过程 dic = ...

  3. day19:os模块&shutil模块&tarfile模块

    os模块:对系统进行操作(6+3) system  popen  listdir  getcwd  chdir  environ / name  sep  linesep import os #### ...

  4. DAY19、日常模块

    一.hashlib模块:加密1.基本使用:import hashlibcipher = hashlib.md5('需要加密的数据(二进制形式)'.encode('utf-8'))print(ciphe ...

  5. day19其他模块

    collections模块 详细内容 http://www.cnblogs.com/Eva-J/articles/7291842.html 1.namedtuple: 生成可以使用名字来访问元素内容的 ...

  6. day19模块1

    http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ...

  7. day19 正则,re模块

    http://www.cnblogs.com/Eva-J/articles/7228075.html  所有常用模块的用法 正则的规则: 在一个字符组里面枚举合法的所有字符,字符组里面的任意一个字符和 ...

  8. day19:常用模块(collections,time,random,os,sys)

    1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...

  9. day19常用模块2

    常用模块21 shelve模块  也是一种序列化方式    使用方法        1.open     sl = shelve.open("shelvetest.txt")   ...

  10. Python day19 模块介绍3(sys,json,pickle,shelve,xml)

    1.sys模块 import sys sys.path()#打印系统path sys.version()#解释程序版本信息 sys.platform()#系统平台 sys.exit(0)#退出程序 c ...

随机推荐

  1. flask_之参数传递

    参数篇 request接收数据 request对象 method:当前请求方法(POST,GET等) url:当前链接地址 path:当前链接的路径 environ:潜在的WSGI环境 headers ...

  2. 牛客寒假6-E.海啸

    链接:https://ac.nowcoder.com/acm/contest/332/E 题意: 有一个沿海地区,可以看作有n行m列的城市,第i行第j列的城市海拔为h[i][j]. 由于沿海,所以这个 ...

  3. python学习之结构语句

    一 循环语句: 1.1 for x in rang(n) :#rang(n)生成左闭右开区间的序列 1.2 while x 条件n: 二条件语句: if 条件表达式: elif 表达式: elif 表 ...

  4. mac Latex dvipdfm 缺少字体错误 Failed to read UCS2/UCS4 TrueType cmap

    dvipdfmx 命令产生 ** ERROR ** Failed to read UCS2/UCS4 TrueType cmap... 错误的原因是没有把 simsun.ttf simkai.ttf ...

  5. PHP知识点总结3

    PHP 函数 PHP 的真正威力源自于它的函数. 在 PHP 中,提供了超过 1000 个内建的函数. <html> <body> <?php function writ ...

  6. 我的NopCommerce之旅(2): 系统环境及技术分析

    一.系统环境 IIS7.0 or above ASP.NET 4.5(MVC 5.0) .NET Framework 4.5.1 or above VS 2012 or above 二.架构设计 Pl ...

  7. var声明提前 undefined

    1.同一代码块内,所有var声明都提前: 2.var 变量的初始化不提前,按顺序执行: 3."undefined"和undefined都存在于window中: 4.if(" ...

  8. HDU4405 Aeroplane chess(期望dp)

    题意 抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html 正在玩飞行棋.输入n,m表示飞行棋有n个格子,有m个飞行点,然后输入m对u,v表示 ...

  9. html5.0学习记录(一)——可拖动视频播放器

    最近自己在重新学习html5新特性,了解到有视频标签和拖动标签,于是自己用这两个特性写了一个小demo,主要功能就是可以通过拖动视频来直接播放.效果图如下: 页面使用了<video>标签和 ...

  10. 正则表达说明—Pattern API

    字符类 [abc]                              匹配a.b.c任意一个字符 [^abc]   匹配除了a.b.c外的任意一个字符 [a-zA-Z]     匹配a-z或A ...