关于模块
import
from xxx import xxx
2. Collections
1. Counter 计数器
2. 栈: 先进后出.
队列:先进先出
deque:双向队列
3. defaultdict 默认值字典
4. namedtuple 命名元祖. struct_time 结构化时间就是命名元祖
5. OrederedDict 有序字典。 按照我们存储的顺序保存. 和3.6以后的字典一样的
3. time 时间模块
  1. 获取系统时间 time.time() 时间戳
  2. 格式化时间 strftime() 时间格式: %Y-%m-%d %H:%M:%S %Y-%m-%d
  3. 结构化时间 time.gmtime() time.localtime()
  strptime() 把格式化时间转化成结构化时间
  mktime() 把结构化时间转化成时间戳

4. os和sys
os.sep 文件路径分隔符
sys.path python查找模块的路径

一  、collections

1.  Counter    计数

lst=["a","a","b","g"]
ret=Counter(lst) #lst中的元素必须为可哈希,不然会报错
print(dict(ret)) #可将其转换成字典的形式 #{'a': 2, 'b': 1, 'g': 1}.
from collections import Counter
# #Counter 计数
s="sdffgds sdggdggdgerhumu34$3*7"
q=Counter(s)
for i in q:
print(i,q[i])
dic={}
for i in s:
dic[i]=dic.setdefault(i,0)+1 #用字典value 计数 ,setdefault 存在就不做任何操作
print(dic) # li2=["a","a","b","g"]
# ret=Counter(li2)
# print(ret) lst=["a","a","b","g"]
ret=Counter(lst) #lst中的元素必须为可哈希,不然会报错
print(dict(ret)) #可将其转换成字典的形式 #{'a': 2, 'b': 1, 'g': 1}

Counter

2.defaultdict 默认值字典

from collections import defaultdict
# lst=[11,32,22,45,66,77,78]
# d=defaultdict(list) #d=defaultdict(可调用的对象或可执行对象)
# for el in lst:
# if el>66:
# d["key1"].append(el) #如果key1不存在时,就会去执行list(),所以d["key1"]=[]
# else:
# d["key2"].append(el)
# print(d) #defaultdict(<class 'list'>, {'key2': [11, 32, 22, 45, 66], 'key1': [77, 78]})
# print(dict(d)) #将其变成字典 def func():
return "胡辣汤" d=defaultdict(func)
print(d["a"]) # 胡辣汤 相当d["a"]=func()
print(d["b"]) # 胡辣汤 相当d["a"]=func()
print(dict(d)) #{'a': '胡辣汤', 'b': '胡辣汤'}

defaultdict

3.队列 queue

#队列
import queue
#
q = queue.Queue() # 创建队列
q.put("李嘉诚")
q.put("陈冠希")
q.put("周润发")
q.put("吴彦祖") print(q.get())
print(q.get())
print(q.get())
print(q.get())
# print(q.get()) # 队列中如果没有元素了. 继续获取的话. 会阻塞
print("拿完了")

4.双向队列

from collections import deque

q = deque() # 创建一个双向队列
q.append("高圆圆")
q.append("江疏影")
q.appendleft("赵又廷")
q.appendleft("刘大哥")
# 刘大哥 赵又廷 高圆圆 江疏影
print(q.pop()) # 从右边获取数据
print(q.pop())
print(q.popleft()) # 从左边获取数据
print(q.popleft())
print(q.pop())

5.命名元组namedtuple

from collections import namedtuple
# point=namedtuple("Point",["x","y"]) #命名元组 相对于写了一个类 可用于 写菜单
# p=point(2,5)
# print(p.x)
# print(p.y) person=namedtuple("Person","name age")
# p=person(name="deng",age=12)
p=person("deng",123)
print(p.name)
print(p.age)

6.orderdict

from collections import OrderedDict
# 按照我们存储的顺序保存数据
od = OrderedDict({ 'b':'薯条','a':'娃哈哈', 'c':'胡辣汤'})
print(od) dic = {}
# print(dic["周润发"]) # 报错
print(dic.get("周润发", "英雄本色")) # None

二.time模块

1.获取当前系统时间, 时间戳   t=time.time()

2.  获取格式化时间   t= time.strftime("%Y-%m-%d %H:%M:%S")

3.获取结构化时间   t = time.localtime()

格式化时间 -> 时间戳

import time
#获取系统时间 时间戳 time.time()
print(time.time())
#格式化时间 strftime string format time time.strftime(格式)
t=time.strftime("%Y-%m-%d %H:%M:%S")
print(t)
# count=0
# while 1:
# t2=time.strftime("%S")
# time.sleep(1)
# count+=1
# print(t2) #结构化时间 time.localtime()
t=time.localtime(1888888000) #时间戳---》转化成结构化时间
t2=time.gmtime(0) #格林尼治时间
print(t2)
print(t)#tm_year=2029, tm_mon=11, tm_mday=9, tm_hour=11, tm_min=6, tm_sec=40, tm_wday=4, tm_yday=313, tm_isdst=0
print(t.tm_year)
print(t.tm_mon)
print(t.tm_mday)
print(t.tm_min)
print(t.tm_sec)
print(t.tm_wday)
print(t.tm_yday) str_time=time.strftime("%Y-%m-%d %H:%M:%S",t) #将结构化时间转化成格式化时间,此处的t必须为结构化时间
print(str_time) #格式化时间转化成结构化时间 strptime string parse time time.strptime(格式化时间,格式化的方式)
s="2018-12-11 8:30:43"
tt=time.strptime(s,"%Y-%m-%d %H:%M:%S")
print(tt)
# #结构化时间转化成时间戳 time.mktime(结构化时间)
ss=time.mktime(tt)
print(ss)

time模块

import time
#小时 分钟
t1="2018-10-11 11:12:33"
t2="2020-12-19 8:12:34"
#格式化时间--》结构化时间
struct_time1=time.strptime(t1,"%Y-%m-%d %H:%M:%S")
# print(struct_time1)
struct_time2=time.strptime(t2,"%Y-%m-%d %H:%M:%S")
#结构化时间---》时间戳
t11=time.mktime(struct_time1)
# print(t11)
t12=time.mktime(struct_time2) # 时间差:
t=t12-t11 # 60 60
# print(t)
h=t//(60*60)
m=(t-h*3600)//60
s=t%60
print(h)
print(m)
print(s)
print("t2和t1的时间差为:%s小时,%s分,%s秒"%(h,m,s)) def time_than(t1,t2):
'''
计算时间差的函数
:param t1: 为格式化时间点1 "%Y-%m-%d %H:%M:%S"
:param t2: 为格式化时间点2 "%Y-%m-%d %H:%M:%S"
:return: 以字典形式返回时间差
'''
#格式化时间-->结构化时间
struct_time1 = time.strptime(t1, "%Y-%m-%d %H:%M:%S")
struct_time2 = time.strptime(t2, "%Y-%m-%d %H:%M:%S")
#结构化时间--->时间戳
t11 = time.mktime(struct_time1)
t12 = time.mktime(struct_time2)
t=t12-t11
day=t//(3600*24)
h=(t-day*3600*24)//3600
min=(t-day*3600*24-3600*h)//60
s = t % 60
return {"day":day,"h":h,"m":m,"s":s}
print(time_than(t1,t2))

时间差

import time
begin = "2019-11-14 16:30:00"
end = "2018-11-14 18:00:00"
# 用时间戳计算出时间差(秒)
begin_struct_time = time.strptime(begin, "%Y-%m-%d %H:%M:%S")
end_stract_time = time.strptime(end, "%Y-%m-%d %H:%M:%S") begin_second = time.mktime(begin_struct_time)
end_second = time.mktime(end_stract_time) # 秒级的时间差 180000
diff_time_sec = abs(begin_second - end_second) # 转化成结构化时间
t = time.gmtime(diff_time_sec) # 最好用格林尼治时间。 否则有时差
print(t) print("时间差是%s年%s月 %s天 %s小时%s分钟" % (t.tm_year-1970, t.tm_mon-1, t.tm_mday-1,t.tm_hour, t.tm_min ))

时间差二

三. random模块

import random
print(random.random()) #产生0-1的随机小数
print(random.randint(1,9)) #产生一个 1-9 包括1和9 的整数
print(random.randrange(1,9)) ##产生一个 1-9 不包括1和9 的整数
print(random.randrange(1,9,2)) #产生1个 [1,3,5,7] lst=["a","b",[1,2,"a"],"g"]
print(random.choice(lst)) #从列表lst中随机取一个元素
print(random.sample(lst,2)) #从列表lst中随机取2个元素
random.shuffle(lst) #打乱顺序
print(lst)
import random
# #四位随机码
# veify_code=""
# for i in range(4):
# v=chr(random.randint(65.,90))
# veify_code+=v
# print(veify_code) #用random.random 生成[n,m]随机整数
def suijizheng(n,m):
return int(random.random()*(m-n+1)+n) #随机红包 100 随机分给30人
def hongbao(money,num):
m=money
lst=[]
for i in range(num-1):
ret = random.random() * (money / num)
lst.append(ret)
num-=1
money-=ret
last=m-sum(lst)
lst.append(last) lst2=[]
for i in range(len(lst)-1):
l=float(format(lst[i],"0.2f"))
lst2.append(l)
last2=float(format(m-sum(lst2),"0.2f"))
lst2.append(last2)
# print(lst2)
# print(sum(lst2))
random.shuffle(lst2)
return lst2
print(hongbao(100,30))
print(sum(hongbao(100,30)))

随机红包

四  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.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下为:

os.name    输出字符串串指示当前使⽤用平台。win->'nt'; Linux->'posix'

五.SYS 模块

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

命令行参数List,第⼀一个元素是程序本身路路径 sys.exit(n)

退出程序,正常  退出时   exit(0),          错误   退出sys.exit(1)

sys.version        获取Python解释程序的版本信息

sys.path           返回模块的搜索路径,初始化时使⽤用PYTHONPATH环境变量量的值

sys.platform       返回操作系统平台名称

21 模块(collections,time,random,os,sys)的更多相关文章

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

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

  2. 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

  3. 模块、包及常用模块(time/random/os/sys/shutil)

    一.模块 模块的本质就是一个.py 文件. 导入和调用模块: import module from module import xx from module.xx.xx import xx as re ...

  4. Python常用模块(time, datetime, random, os, sys, hashlib)

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  5. 模块:time,random,os,sys

    时间模块 import time # print(time.time()) #时间戳 # print(time.strftime('%Y-%m-%d %X')) #格式化字符 # print(time ...

  6. 2018-11-13-常用模块1 (time random os sys)

    1.时间模块 time 2.随机数模块 random 3.与操作系统交互模块 os 4.系统模块 sys 在我们真正开始学习之前我们先解决下面几个问题,打好学习模块的小基础,以便更好的学习模块. (1 ...

  7. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

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

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

  9. 模块random+os+sys+json+subprocess

    模块random+os+sys+json+subprocess 1. random 模块   (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...

随机推荐

  1. quartz-job实现实时或定时发送短信任务

    存放调度器(Job 和 Trigger)信息的xml配置文件: 这是某个指定的要实现的定时任务: <!-- 每天给项目经理发送短信避免短信服务挂了 定时每天08:30执行--> <j ...

  2. 远程获得的有趣的linux命令

    使用这些工具从远程了解天气.阅读资料等. 我们即将结束为期 24 天的 Linux 命令行玩具日历.希望你有一直在看,如果没有,请回到开始,从头看过来.你会发现 Linux 终端有很多游戏.消遣和奇怪 ...

  3. Python3 itchat实现微信定时发送群消息

    Python3 itchat实现微信定时发送群消息 一.简介 1,使用微信,定时往指定的微信群里发送指定信息. 2,需要发送的内容使用excel进行维护,指定要发送的微信群名.时间.内容. 二.py库 ...

  4. Java集合总结(List、Map、Set)

    集合的引入 当我们有种需求,需要存储多个元素的结构时,我们前面讲过数组,数组可以存储.但是数组也有它的弊端,使用的时候,必须先定义好长度,也就是数组的长度是固定,不能根据我们的需求自动变长或者变短. ...

  5. React 回忆录(四)React 中的状态管理

    Hi 各位,欢迎来到 React 回忆录!

  6. Python3基础 super 子类调用父类的__init__

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. sql 锁

    数据库中不使用锁时可能出现的问题: 1.更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有执行任何的锁操作,因 ...

  8. Tempter of the Bone(dfs+奇偶剪枝)题解

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  9. Codeforces Round #528 div1

    完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧.. A - Connect Three 这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上.但是我做的还是 ...

  10. POJ 3628 Bookshelf2(0-1背包)

    http://poj.org/problem?id=3628 题意:给出一个高度H和n个牛的高度,要求把牛堆叠起来达到H,求出该高度和H的最小差. 思路:首先我们计算出牛的总高度sum,sum-H就相 ...