day----15 模块

colectiong模块

在python内置的数据类型(dict list set tuple)的基础上,collections模块还提供了几个额外的数据类型
Counter deque defaultdict namedtuple OrderedDict
Counter     计数器  用来计数的
deque      双端队列 不过这个两头都能进能出
defaultdict   带有默认值的字典
namedtuple    具名元组 直接生成可以使用名字来访问元素内筒的tuple
OrderedDict 有序的字典

namedtuple

# namedtuple(名字,其中的数据参数)     扑克牌    坐标     一个城市的信息
from collections import namedtuple
# 坐标
point = namedtuple('坐标是',['x','y','z'])
point_num = point(2,3,3)
print(point_num)  # 坐标是(x=2, y=3, z=3)
print(point_num.x)  # 2
print(point_num.y)  # 3
print(point_num.z)  # 3


# 扑克
Poker = namedtuple('poker','flower num')
Poker_type = Poker('♠','A')
print(Poker_type) # poker(flower='♠', num='A')
print(Poker_type.flower) # ♠
print(Poker_type.num) # A


城市
City = namedtuple('USA','name hobby')
City_n = City('Koby','basketball')
print(City_n) # USA(name='洛杉矶', hobby='Koby basetball')
print(City_n.name) # Koby
print(City_n.hobby) # basketball
 

队列

# 队列   先进先出(FIFO    frist in frist out)   不能插队
import queue
q = queue.Queue()    # 生成队列对象
q.put('frist')   # 向队列中添加值
q.put('second')
q.put('third')

print(q.get())  # frist 向队列要值
print(q.get())  # second
print(q.get())  # third
print(q.get()) # 如果队列中的值取完了 程序不会报错 而是在哪里跌倒就在那里歇会 直到从队列中拿到值

deque

# deque 双端队列       append    appendeleft      pop     popleft
# from collections import deque   #####自行解注释
q = deque(['a','b','c'])
q.append('哈哈')  # 追加   直接加在源列表最后
q.appendleft('你猜我在那里')  # 在原列表的最开始添加元素
print(q)  # deque(['你猜我在那里', 'a', 'b', 'c', '哈哈'])
#
p = deque([1,2,3])
print(p.pop())  # 按照索引弹出最后一个元素
print(p.popleft())  # 弹出第一个索引对应的值
#
p = deque([1,2,3])
p.insert(2,'你把我插队在哪里')  # 特殊     双端队列可以在根据索引在任意位置插值
print(p)  # deque([1, 2, '你把我插队在哪里', 3])
p.insert(4,'你把我插在哪里')
print(p)  # deque([1, 2, '你把我插队在哪里', 3, '你把我插在哪里'])
#
dic = dict([('name','james'),('age',20)])  # 创建字典的方式  一般不用
print(dic)  # {'name': 'james', 'age': 20}

OrderedDict

OrderedDict    有序字典   python中的字典是无序的    但是用了这个  是按照你书写的顺序了
from collections import OrderedDict
dic = OrderedDict([('name','james'),('age','20')])
print(dic)  # OrderedDict([('name', 'james'), ('age', '20')])
dic1 = OrderedDict()
dic1['x'] = 1
dic1['y'] = 2
dic1['z'] = 3
print(dic1)  # OrderedDict([('x', 1), ('y', 2), ('z', 3)])

defaultdict

num = [1,2,3,4,5,6,7,8,9]
dic = defaultdict(list)
for i in num:
    if i < 6:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print(dic)  # defaultdict(<class 'list'>, {'k1': [1, 2, 3, 4, 5], 'k2': [6, 7, 8, 9]})

my_dict1 = defaultdict(str) print(my_dict1['xxx']) # 返回空 my_dict2 = defaultdict(bool) print(my_dict2['kkk']) # False my_dict3 = defaultdict(tuple) print(my_dict3['mmm']) # () my_dict4 = defaultdict(int) print(my_dict4['yyy']) # 0 print(my_dict4['xxx']) # 0

Counter

   先将字符串内容循环取值  加入字典的key     再计算次数  当作字典的value存入字典
from collections import Counter
s = 'asdasdasdasdasd'
res = Counter(s)
print(res)  # Counter({'a': 5, 's': 5, 'd': 5})   一次尽量两步

time模块

时间的三种表现形式

  1  时间戳    time.time   当前时间距离1970-01-01  00:00:00  过去的秒数

import time
print
(time.time()) # 1563447416.9686005

  2  格式化时间  time.strftime    按照一定的格式输出需要的时间     2019-07-18  18:46:46    例如这样子的

    

print(time.strftime('%Y-%m-%d'))  # 2019-07-18
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 2019-07-18 18:56:15
print(time.strftime('%Y-%m-%d %X')) # 2019-07-18 18:56:15 %X等价于%H:%M:%S

  3  结构化时间   time.localtion      当前的是按照一定的结构        time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=18, tm_min=47, tm_sec=55, tm_wday=3, tm_yday=199, tm_isdst=0)

格式化时间的字符串

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

python中时间日期格式化符号:
格式化时间

datetime模块

import datetime
print(datetime.date.today())  # 2019-07-18   今天的日期     年月日的形式输出
print(datetime.datetime.today())  # 2019-07-18 18:54:18.496601    也是今天是日期  年月日时分秒



res = datetime.date.today()
print(res.year) # 2019
print(res.month) # 7
print(res.day) # 18
print(res.weekday()) # 3 0-6表示星期  0表示周一
print(res.isoweekday())  # 1-7表示星期 7就是周日
 

时间的运算

# 天数     timedalta
local_time = datetime.date.today()  # 2019-07-18          # 日期对象
num_time = datetime.timedelta(days=10)      # 10天     运算天数
res = local_time+num_time  # 今天过后10天
res1 = local_time-num_time  #  今天之前10天 
print(res)  # 2019-07-28
print(res1)  # 2019-07-08

UTC时间    根据格林威治的时间

dt_today = datetime.datetime.today()
dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow()
print(dt_utcnow)  # 2019-07-18 11:09:33.884600
print(dt_now)  # 2019-07-18 19:09:33.884600
print(dt_today)  # 2019-07-18 19:09:33.884601

random模块(随机数)

import random

print(random.randint(0,9))  # 随机一个范围内的整数
print(random.random())  # 小数点后面17位      随机一个0-1之间的小数
print(random.choice([1,2,3,4,5,6,7,8,9]))  # 随机选取一个列表内的数    适用于摇号

# shuffle  #   洗牌   数据随机打乱
num = [1,2,3,4,5,6,7,8,9]
random.shuffle(num)
print(num)

随机验证码联系

import random
verification_num = input('输入验证码位数:')
verification_num = int(verification_num)

def verification(verification_num):
    verification_code = ''
    for num in range(verification_num):
       upper_str = chr(random.randint(65,90))
       lower_str = chr(random.randint(97,122))
       random_int = str(random.randint(0,9))
       verification_code += random.choice([upper_str,lower_str,random_int])
    print(verification_code)
    return verification_code
verification(verification_num)
View Code

os模块

os 模块是与操作系统交互的一个接口

import os
# os 使用方法
os.remove()     删除一个文件
os.rename('原名字','修改后名字')    修改文件名字
os.mkdir('文件名')   生成一个单级的空目录
os.rmdir('文件名')  删除一个单级的空目录   目录不为空 无法删除  会报错
os.listdit('文件名')    列出指定文件下所有的文件和子目录  包括隐藏文件





os.makedirs('文件1/文件2/文件3')    生成一个多层的目录
os.
removedirs('文件名')      目录为空的  就删除   并返回上一级目录  还空   就继续删  以此类推
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.exists(path) 检查文件路径是否存在,存在返回Ture 不存在返回False os.path.ahspath(path) 返回规范的绝对路径 os.path.isabs(path) 判断路径是不是绝对路径 是 返回 Ture os.path.isfile(path) 判断是不是一个存在的文件 是 返回Ture 否则返回None os.path.isdir(path) 判断是否是存在的目录 存在返回Ture 否则返回None os.path.dirname(path) 返回路径文件的目录 os.path.split(path) 路径切分成目录和文件名 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小

sys模块

sys模块是和python解释器交互的一个接口

import sys

sys.path.append()    将某个路径添加在环境变量中


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

序列化模块

subprocess模块

猜你喜欢

转载自www.cnblogs.com/xuzhaolong/p/11210207.html