python常用的内置模块

Posted 好大一个圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python常用的内置模块相关的知识,希望对你有一定的参考价值。

import collections

    

time,datetime 以及 calendar

主要用于封装一些关于集合类的相关操作,例如Iterable ,Iterator  提供了了⼀一些除了了基本数据类型以外的数据集合类型 (Counter, deque, OrderDict, defaultdict以及namedtuple)

  1. Counter 计数器  用于计算可迭代对象中各个元素出现的个数

from collections import Counter
lst = [\'猪肚鸡\',\'纸包鱼\',\'随便点\',\'随便点\']
print(Counter(lst)) #结果:Counter({\'随便点\': 2, \'猪肚鸡\': 1, \'纸包鱼\': 1})

s = \'这是在干嘛,我也不知道这是在干嘛\'
print(Counter(s)) 
#结果:Counter({\'这\': 2, \'是\': 2, \'在\': 2, \'干\': 2, \'嘛\': 2, \',\': 1, \'我\': 1, \'也\': 1, \'不\': 1, \'知\': 1, \'道\': 1})

获取的结果与像字典一样使用,可以通过for I in  计算器获取字典的key ,都不能直接使用字典特有的方法

 

2.deque  双向队列

from collections import deque
a = deque()
a.append(\'鲁班\')# 从右侧添加
a.append(\'李白\')
a.appendleft(\'荆轲\')#从左侧添加
a.appendleft(\'老夫子\')

# # print(a.pop())#从右边弹出
# # print(a.pop())
# # print(a.pop())
# # print(a.pop())
print(a.popleft())#从左边弹出
print(a.popleft())
print(a.popleft())
print(a.popleft())
#

# namedtuple 命名元组

# 给元组内的元素进行命名. 比如. 我们说(x, y) 这是一个元组. 同

时. 我们还可以认为这一个点坐标. 这时, 我们就可以使namedtuple对元素进行命名
from collections import namedtuple
p = namedtuple(\'中国坐标\',[\'x\',\'y\'])#相当于下面的类的设置
class gg :
    def __init__(self,x,y):
        self.x = x
        self.y  = y

a = p(2,3)
print(a.x)#2
print(a.y)#3
print(a)#中国坐标(x=2, y=3)
#


  1. 1.    defaultdict: 可以给字典设置默认值. key不存在时. 直接获取默认值:

# from collections import defaultdict
# gg = defaultdict(list) #创建 不是字典,但是可以当做字典来用,创建一个类似字典的东西,当查找或者是获取这个中的key的时候,如果没有
# # 的话,就会自动在这个东西创建这个key ,并将这个key的值设置为一个可调用的类,例如这里设置的是list,表示如果没有查找到对对应的 key的值
# 的话,就会调用list,创建一个空的列表给这个key
# #
# # 通过for 循环的话,获取到的是key,
# print(type(gg))#<class \'collections.defaultdict\'>
# # print(gg[\'hiahao \'])
# lst = [11.222,33,44,55,66,]
# for i in lst:
#     if i < 66:
#         gg[\'不可以\'].append(i)
#     else:
#         gg[\'可以\'].append(i)
#
# print(gg)#defaultdict(<class \'list\'>, {\'不可以\': [11.222, 33, 44, 55], \'可以\': [66]})
# # print(dict (gg))
# # for b in gg:
# #     print(b)

 

 

import time

     在时间模块中主要分为时间戳,结构化时间,格式化时间
       time.time() 获取当前的时间,显示的是时间戳,时间戳(timestamp). 使用的是从1970年年01月01日 00点00分00秒到现在共经过了了多少秒... 是一个float类型是数字
     time.strftime(format, p_tuple=None默认按照括号内的格式输出当前的时间一般使用的是time.strftime("%Y-%m-%d %H:%M:%S") p_tuple 是命名元组,传递过去的是格式化时间
 
       time.localtime(seconds=None) 默认输出当前的结构化时间
       time.gmtime()  获取格林尼治时间,结构化时间
 
        strptime(string, format) 将字符串转化为结构化时间(字符串格式要与format的格式一致,见下:)

        time.mktime(p_tuple) 将结构化时间转化为时间戳

 

 

日期的格式化标准如下:
%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 当前时区
 
常见用法:

#将某个时间的时间戳转换为普通的格式
gg = time.localtime(32499999999)
print(time.strftime(\'%Y-%m-%d %H:%M:%S\',gg))

 

# 将普通的格式化时间转化为时间戳(float)
ss = \'2999-11-19 17:46:39\'
gg = time.strptime(ss,\'%Y-%m-%d %H:%M:%S\')
print(time.mktime(gg))

 
时间差的计算

begin = "2018-11-14 16:30:00"
end = "2018-11-14 18:00:10"
begin_time_chuo =time.mktime( time.strptime(begin, "%Y-%m-%d %H:%M:%S"))
end_time_chuo = time.mktime(time.strptime(end, "%Y-%m-%d %H:%M:%S"))
time_cha = end_time_chuo - begin_time_chuo

 

1. 用时间戳计算出时间差(秒)
hour = int(time_cha //3600)
min = int(time_cha %3600 //60)
sec = int(time_cha% 3600 % 60)
print("时间差是 %s小时%s分钟%s秒" % (hour,min,sec))
 
2. 用通过结构化时间计算时间差
  t = time.gmtime(time_cha) # 最好用格林尼治时间。 否则有时差
print("时间差是%s年%s月 %s天 %s小时%s分钟" % (t.tm_year-1970, t.tm_mon-1, t.tm_mday-1,t.tm_hour, t.tm_min ))
 
因为默认的格式化时间是1970年年01月01日 00点00分00秒
import random
       
print(random.random()) # 随机取出 0-1 的小数
print(random.uniform(3,11))  #随机取出3-11 的小数
print(random.randint(3,11)) #随机取出3-11 的整数
lst = [\'a\',\'b\',\'c\',\'d\']
print(random.choice(lst))  #在列表中取出任意一个元素
print(random.sample(lst,3)) #在列表中取出任意n个元素添加到新的列表中
 

lst1 = [\'a\',\'b\',\'c\',\'d\']
random.shuffle(lst1)  #将列表的顺序打乱
print(lst1)

while 1 :
    print(random.uniform(1,2))  #随机取出3-11 的小数前闭后开

 

 

import os    使python具有操作系统的操作命令,例如创建,修改文件

 

 

os.getcwd() 获取当前的路径

os.chdir(‘文件夹名称’)  进入到某个文件夹中

os.rename(旧名字,新名字) 记住执行该命令的程序应该与被修改的文件是在同一个文件夹中的

 

os.makedirs(\'dirname1/dirname2\')    可生成多层递归目录

os.removedirs(\'dirname1\')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

 

os.mkdir(\'dirname\')    生成单级目录;相当于shell中mkdir dirname

os.rmdir(\'dirname\')    删除单级空目录,若目录不为空则无法删除,

 

os.listdir(\'dirname\')    列出指定目录下的所有文件子⽬目录,包括隐藏文件,并以列表方式打印

os.remove()  删除一个文件

os.rename("oldname","newname")  重命名文件/目录

os.stat(\'path/filename\')  获取文件/目录信息

os.system("bash command")  运行shell命令,直接显示

 

 

os.path

os.path.abspath(path) 返回path规范化的绝对路径

os.path.split(path) 将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.sep    输出操作系统特定的路径分隔符,win下为"\\\\",Linux下为"/"

 

如果不在同一个文件夹也可以通过相对路径的方式进行修改

import sys   对应的是python解析器上的系统上的操作 系统参数获取

 

sys.path           返回模块的搜索路径变量的值(相当于python自身的环境变量)

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

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

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

sys.argv           命令行参数List,第一个元素是程序本身路径

 

 

以上是关于python常用的内置模块的主要内容,如果未能解决你的问题,请参考以下文章

python笔记--内置模块

Python 常用模块学习

Python常用内置模块

学习笔记(11月10日)--python常用内置模块的使用(logging, os, command)

python---常用模块

python 常用内置模块使用