Python入门学习 DAY17 常用模块

Python入门     

DAY 17

今日内容: 时间模块,random模块,os模块,sys模块,shutil模块,json模块,pickle模块

1.时间模块 time 和datetime

import time

# 获取时间戳  返回浮点型
print(time.time())

# 获取当地时间   返回的是结构化时间
print(time.localtime())

#  获取UTC时间 返回的还是结构化时间  比中国时间少8小时
print(time.gmtime())

# 将获取的时间转成我们期望的格式 仅支持结构化时间
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

# 将格式化字符串的时间转为结构化时间  注意 格式必须匹配
print(time.strptime("2018-08-09 09:01:22","%Y-%m-%d %H:%M:%S"))

# 时间戳 转结构化
print(time.localtime(time.time()))

# 结构化转 时间戳
print(time.mktime(time.localtime()))

sleep # 让当前进程睡眠一段时间 单位是秒
time.sleep(2)
print("over")

# 不太常用的时间格式
print(time.asctime())
print(time.ctime())
import datetime

# 获取时间 获取当前时间 并且返回的是格式化字符时间
print(datetime.datetime.now())

# 单独获取某个时间 年 月
d = datetime.datetime.now()
print(d.year)
print(d.day)

# 手动指定时间
d2 = datetime.datetime(2018,8,9,9,50,00)
print(d2)

# 计算两个时间的差  只能- 不能加+
print(d - d2)

# 替换某个时间
print(d.replace(year=2020))

# 表示时间差的模块 timedelta
print(datetime.timedelta(days=1))

t1 = datetime.timedelta(days=1)
t2 = datetime.timedelta(weeks=1)
print(t2 - t1)
# 时间差可以和一个datetime进行加减
print(d + t2)


    2.random模块(随机数)

import random

# 0 - 1 随机浮点 不包含1
print(random.random())

#randint 包含0 1 
print(random.randint(1,3))

#randrange 不包含 3
print(random.randrange(1,3))

#choices 随机选⼀个
print(random.choices((1,2,3)))

#sample  随机选指定个数  2 为选的个数
print(random.sample([1,2,3],2))

#shuffle(列表) 打乱顺序
l = [1,2,3,4,5]
print(random.shuffle(l))
print(l)

#uniform 浮点  不包含 1 2 
print(random.uniform(1,2))

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

os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间


    4.sys(系统相关一般用于设计脚本程序)

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

 

     5.shutil(高级的文件、文件夹、压缩包 处理模块)

#将文件内容拷贝到另一个文件中
import shutil  
shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

#拷贝文件
shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在

#仅拷贝权限。内容、组、用户均不变
shutil.copymode('f1.log', 'f2.log') #目标文件必须存在

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

import zipfile
# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close()
import tarfile

# 压缩
>>> t=tarfile.open('/tmp/egon.tar','w')
>>> t.add('/test1/a.py',arcname='a.bak')
>>> t.add('/test1/b.py',arcname='b.bak')
>>> t.close()


# 解压
>>> t=tarfile.open('/tmp/egon.tar','r')
>>> t.extractall('/egon')
>>> t.close()


    6.json pickle

        1.什么是序列化
            序列化指的是将内存中的数据类型转换成一种中间格式,该格式可以用来存到硬盘或基于网络传输
        2.为何要序列化
            1.持久化(把某一时刻程序的运行状态永久保存下来)
            2.基于网络传输,可以扩平台交互数据
        3.如何序列化
            json:
                优点:兼容所有语言,可以扩平台交互数据
                缺点:不能支持所有的python数据类型
            pickle
                优点:可以支持所有的python数据类型
                缺点:不能跨平台
            json.dumps(数据类型)  json.loads(json格式的字符串)
            json.dump(数据类型,文件对象)  json.load(文件对象)

 pickle模块
        作用于序列化
        序列化就是将内存中的数据持久化到硬盘
    回顾 使用文件读写也能完成把数据持久化存储  但是有局限性 当数据比较复杂时用起来就很麻烦
    例如 需要把一个字典存储到硬盘中   先转成字符串 写入 读取为字符串 转为原始的格式

    所以就有了pickle
        1.能将所有python中的数据序列化    int float str dic list tuple set bool
        2.反序列化  将之前序列化的数据 在恢复成python的数据格式

    pickle产生的数据 只能由python读取  (跨平台性差)
    今后你开发程序不可能就是单机程序 你需要和其他设备 其他平台 交换数据

    我们需要找到一种通用的数据格式 让各个平台都能识别

      pickle产生的数据 只能由python读取  (跨平台性差)
     今后你开发程序不可能就是单机程序 你需要和其他设备 其他平台 交换数据所以我们需要找到一种通用的数据格式 让各个平台都能识别

    json模块
        用于处理json格式数据的模块
        json 全称 JavaScrip Object Notation  js的对象表示法
        所以json能支持的数据类型就是js支持数据类型

    json格式标准
        能存储的有 str int float dic list bool
        案列  要求 数据的最开始和最末尾 必须是{} []
        {"name":"yyh"}

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


       

import json
 
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class 'dict'>
 
j=json.dumps(dic)
print(type(j))#<class 'str'>
 
 
f=open('序列化对象','w')
f.write(j)  #-------------------等价于json.dump(dic,f)
f.close()
#-----------------------------反序列化<br>
import json
f=open('序列化对象')
data=json.loads(f.read())#  等价于data=json.load(f)
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'])

以上为本次学习内容

内容参考:http://www.cnblogs.com/linhaifeng/articles/6384466.html#_label3

猜你喜欢

转载自blog.csdn.net/sql121407/article/details/81568282