常用内置模块

一、time模块

在python中,时间分为3种
       1.时间戳: timestamp,从1970年1月1日到现在的秒数, 主要用于计算两个时间的差
     2.localtime: 本地时间 表示的是计算机当前所在的位置
  3.UTC:世界协调时间

import time

# 时间戳,以秒做单位
print(time.time()) # localtime 结构化时间
print(time.localtime()) # UTC时间
print(time.gmtime()) # 格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # 时间戳--->结构化
print(time.localtime(time.time())) # 结构化--->时间戳
print(time.mktime(time.localtime())) time.sleep(5)
print('weekup')

二、datetime模块

1、python实现的一个时间处理模块,time用起来不太方便, 所以就有了datetime
2、优点:datetime相比time,更灵活

3、timedelta表示时间差
   两个时间差可以加减乘除
   时间差和datetime 可以加减

# 单独获取某个年月日
d1 = datetime.datetime.now()
print(d1)
print(d1.year)
print(d1.hour) # 设定时间点
d2 = datetime.datetime(2008, 11, 15, 12, 33, 47)
print(d2) # 计算两个时间的差
print(d1 - d2) # 替换指定时间
print(d1.replace(year=2017)) # 表示时间差
print(datetime.timedelta(days=5)) # 时间差与datetime.datetime相加
print(d1 + datetime.timedelta(days=5))
print(d1 + datetime.timedelta(weeks=3))

三、random模块

random()            随机产生一个大于等于0且小于1的小数
randint(a,b)             随机产生一个在a与b之间的整数,包括a和b
randrange(a,b)             随机产生一个大于等于a,且小于b的数
choice([1,2,32,3,2,"哈哈"])          随机选1个
sample([1,"a",["c","d"]],2)            随机选指定个数
uniform(1,3)          随机产生一个大于1小于3的小数
shuffle(列表)       打乱顺序

import random

# 随机生成    0 <= m < 1的数
print(random.random()) # 随机生成整数 包含头、尾
print(random.randint(1, 5)) # 随机选择一个
print(random.choice([1, 2, 3, 4])) # 随机取3个
print(random.sample([1, 2, 'aa', [1, 2, 3]], 3)) # 随机产生一个大于1小于3的小数
print(random.uniform(1, 2)) # 打乱列表顺序
l = [1, 2, 's', 'ww', [1, 2], (1, 2, 3)]
random.shuffle(l)
print(l)

随机产生一个包含字母数字的9位验证码

def random_word(n):
for i in range(n):
res = str(random.randint(0, 9))
res2 = chr(random.randint(67, 90))
choice = random.choice([res, res2])
print(choice, end='')
random_word(9)

随机产生一个验证码

四、sys模块

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

# 第一个元素是程序本身路径
print(sys.argv) # 返回模块的搜索路径
print(sys.path) # 退出程序
sys.exit(0)

打印进度条

def progress(percent, width):
percent = percent if percent <= 1 else 1
text = '[%%-%ds]' % (width) # text = '[%-20s]'
text = text % ('*' * int(percent * width))
text = text + '%s%%'
text = text % (percent * 100)
print('\r%s' % text, end='') import time
import random cur_filsize = 0
while True:
time.sleep(0.5)
file_size = 10240
cur_filsize += random.random()*100
progress(cur_filsize / file_size, 50)
if cur_filsize >= file_size:
print()
print("finish")
break

实现打印进度条功能

import sys
import time def progress(percent,width=50):
if percent >= 1:
percent=1
show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')
print('\r%s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='') data_size=1025
recv_size=0
while recv_size < data_size:
time.sleep(0.1) #模拟数据的传输延迟
recv_size+=1024 #每次收1024
percent=recv_size/data_size #接收的比例
progress(percent,width=70) #进度条的宽度70

控制台传参打印

五、os模块

该模块与操作系统相关,是围绕文件和目录的操作

os.remove()  删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
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的大小

六、shutil模块

该模块用于简化文件的高级操作

  主要是:复制,移动,删除,压缩文件

1、复制文件

copyfileobj(fsrc, fdst, length=16*1024)

 import shutil
shutil.copyfileobj(open("a.txt","r",encoding="utf8"),open("b.txt","w",encoding="utf-8"),length=1024)

2、压缩文件

利用shutil来创建压缩文件,仅支持tar和zip格式,内部调用zipFile,tarFile模块实现

 import shutil
shutil.make_archive("test","zip",root_dir="D:\脱产三期视频\Day17\代码")

解压文件

import zipfile,tarfile

# 解压zip
z = zipfile.ZipFile(r"D:\脱产三期视频\Day17\test.zip")
z.extractall()
z.close() # 解压tar
t = tarfile.open(r"D:\脱产三期视频\Day17\test.tar")
t.extractall()
t.close()

解压文件

七、pickle模块

1、作用于序列化
  所谓序列化就是将内存中的数据持久化到硬盘
2、pickle产生的数据 只能由python读取  (跨平台性差)

3、示例

import pickle

dic={'name':'alvin','age':23,'sex':'male'}

print(type(dic))#<class 'dict'>

j=pickle.dumps(dic)
print(type(j))#<class 'bytes'> f=open('序列化对象_pickle','wb')#注意是w是写入str,wb是写入bytes,j是'bytes'
f.write(j) #-------------------等价于pickle.dump(dic,f) f.close()
#-------------------------反序列化
import pickle
f=open('序列化对象_pickle','rb') data=pickle.loads(f.read())# 等价于data=pickle.load(f) print(data['age'])

八、json模块

1、pickle产生的数据,只能由python读取(跨平台性差),因此json随之产生

2、json 全称 JavaScrip Object Notation,js的对象表示法
     用于处理json格式数据的模块,(数据以什么格式存进去,取出来还是原来的格式)

3、json格式标准

json是一种通用的数据交换格式 目前主流的语言都能够轻松解析
    注意: 在使用json格式的时候,数据类型必须按照要求来写,并且不支持python中的元组,True/Flase,'', ''',None

能存储的有:str,int,float,dic,list,bool

4、常用方法

序列化
  dump 处理文件
  dumps 处理字符串
反序列化
  load 处理文件
  loads 处理字符串

5、示例

import json

users = {'name':"音乐会","age":20,"hobbies":("music","movies")}

# 序列化
print(json.dumps(users))
json.dump(users,open("users.json","wt",encoding="utf-8")) # json的反序列化
jsonstr = json.load(open("users.json","r",encoding="utf-8"))
print(jsonstr)
 

常用内置模块(一)——time、os、sys、random、shutil、pickle、json的更多相关文章

  1. Python 常用内建模块(os, sys,random)

    一.os 模块 1,操作系统与环境变量 import osprint(os.name) #操作系统类型,如果是posix 说明系统是linux unix 或 mac os x :如果是nt 就是win ...

  2. python基础之 序列化,os,sys,random,hashlib

    1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  3. python基础 (序列化,os,sys,random,hashlib)

    1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  4. python基础四(json\os\sys\random\string模块、文件、函数)

    一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+')  #必须用a ...

  5. python-时间模块,random、os、sys、shutil、json和pickle模块

    一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...

  6. Python(正则 Time datatime os sys random json pickle模块)

    正则表达式: import re #导入模块名 p = re.compile(-]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表 ...

  7. 常用模块一(os模块、序列化模块(json和pickle))

    一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...

  8. Python os.removedirs() 和shutil.rmtree() 用于删除文件夹

    概述 os.removedirs() 方法用于递归删除目录.像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般 ...

  9. 常用内置模块(一)--time、os、sys、random、shutil、pickle、json

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

随机推荐

  1. 关系型数据库MySQL(三)_触发器

    简介 用来给保证数据完整性的一种方法,经常用于加强数据的完整性: 是与表事件相关的特殊的存储过程,与存储过程的唯一区别是触发器不能执行execute语句调用,而是在用户执行SQL语句时自动触发执行 执 ...

  2. C# 几进制 转换到几进制

    public string ConvertString(string value, int fromBase, int toBase) { int intValue = Convert.ToInt32 ...

  3. StarUml3.10 Mac 注册key 破解

    /Applications/StarUML.app/Contents/Resources StarUML是用nodejs写的.确切的说是用Electron前端框架写的.新版本中所有的starUML源代 ...

  4. for语句基础求和练习

    结构 for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } 1.求出1-10之间数据之和: class Hello2 { public static void main(Strin ...

  5. VM虚拟机启动centos出现内部错误

    内部错误 解决办法 1.关闭虚拟机后,单击VM,右键,以管理员身份运行.   2.找到电脑的 管理— Vmware workstation server ,默认状态下是手动,把他改为自动重启就可以啦.

  6. Spring IOC DI AOP 的简单理解及应用

    Spring两大特性:IOC 和AOP.IOC 控制反转,AOP 面向切面编程 spring 核心容器的主要组件时Bean工厂(BeanFactory) ,Bean 工厂使用控制反转模式来降低程序代码 ...

  7. Springboot系列1_什么是Springboot

    Springboot系列1_什么是Springboot */--> code {color: #FF0000} pre.src {background-color: #002b36; color ...

  8. 深入研究浏览器对HTML解析过程

    HTML HTML解析 HTML解析是一个将字节转化为字符,字符解析为标记,标记生成节点,节点构建树的过程. 标记化算法 是词法分析过程,将输入内容解析成多个标记.HTML标记包括起始标记.结束标记. ...

  9. Compile Linux Kernel on Ubuntu 12.04 LTS (Detailed)

    This tutorial will outline the process to compile your own kernel for Ubuntu. It will demonstrate bo ...

  10. vue中使用videojs打包后体积过大优化

    videojs 是一个非常好的js库,可以支持各种格式的视频播放,也能做直播流.官网地址 https://videojs.com/ 在vue项目中也可以使用 vue-video-player ,更好的 ...