python 常用模块

一、random模块           

import random
# 生成随机小数
print(random.random())  # 大于0且小于1的小数
# 0.2594428376868646
print(random.uniform(1, 4))  # 大于1且小于4的小数
# 2.6173235045726897

# 生成随机整数
print(random.randint(0, 7))  #大于0且小于7的整数
# 6
print(random.randrange(1, 10, 2))  #大于1且小于10的奇数
# 5

#随机选择列表中的一个值返回
print(random.choice([1, 'abc', [1, 'a'], (1, 2)]))
# abc
#随机选择多个返回,返回的个数为函数的第二个参数
print(random.sample([1, 'abc', [1, 'a'], (1, 2)], 2))  # #列表元素任意2个值
# [[1, 'a'], 'abc']

# 打乱列表顺序
li = [1,2,3,4,5,6]
random.shuffle(li)  #打乱的是原列表,不会生成新的列表
print(li)
# [3, 4, 2, 6, 5, 1]

二、时间(time)模块     

 

    常用方法
    time.sleep(5)
    (线程)推迟指定的时间运行。单位为秒。
    time.time()
    获取当前时间戳
import time
# 时间戳时间
print(time.time())
# 1534767726.0919542
# 格式化时间
t = time.localtime()
print(t)
# time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=20, tm_min=23, tm_sec=49, tm_wday=0, tm_yday=232, tm_isdst=0)
# 格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# 2018-08-20 20:37:15
print(time.strftime('%y-%m-%d %H:%M:%S'))
# 18-08-20 20:37:15
print(time.strftime("%c"))  #外国时间格式
# Mon Aug 20 20:37:15 2018

# 结构化时间
t = time.localtime()
print(t)
# time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=20, tm_min=45, tm_sec=22, tm_wday=0, tm_yday=232, tm_isdst=0)
print(t.tm_year)
# 2018


# 时间戳换成字符串
t = time.localtime(1500000000)  #转为结构化时间
ret = time.strftime('%y-%m-%d %H:%M:%S', t)
print(ret)
# 17-07-14 10:40:00

#字符串时间转时间戳
t = time.strptime('2008-8-8', '%Y-%m-%d')   #转为结构化时间
ret = time.mktime(t)
print(ret)
# 1218124800.0

三、sys模块                   

    sys 是和Python解释器打交道的

import sys
print(sys.argv)     #命令行参数List,第一个元素是程序本身路径
# x = sys.argv[1]     在命令行传入参数
print(sys.path)     #返回模块的搜索路径

四、os模块                    

    os是和操作系统交互的模块

import os
os.makedirs('a1/a2/a3')    #生成多层递归目录
os.removedirs('a1/a2/a3')    #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('d1')              #生成单级目录
os.rmdir('d1')                #删除单级空目录,不为空则删不掉

  

os.system("bash command")  #运行shell命令,直接显示
os.popen("bash command").read()  #运行shell命令,获取执行结果
os.getcwd()             #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  #改变当前脚本工作目录;相当于shell下cd


# 把路径中不符合规范的/改成操作系统默认的格式
os.path.abspath(path)

# 能够给能找到的相对路径改成绝对路径
os.path.abspath(path)

# 就是把一个路径分成两段,第二段是一个文件/文件夹
os.path.split(path)

# 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.dirname(path)
# 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
# os.path.basename(path)

# 如果你两个值都需要 os.path.split
# 如果你只要一个值 os.path.dirname/os.path.basename

# 判断文件/文件夹是否存在
os.path.exists(path)

# 如果path是绝对路径,返回True
os.path.isabs(path)
# 如果path是一个存在的文件,返回True。否则返回False
os.path.isfile(path)

# 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.join(path1[, path2[, ...]])
# 返回path所指向的文件或者目录的最后访问时间
os.path.getatime(path) 
# 返回path所指向的文件或者目录的最后修改时间
os.path.getmtime(path)  
# 返回path的大小
os.path.getsize(path)

  

 五、序列化模块             

  1.序列化:

   将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

  2.序列化的目的:

   1、以某种存储形式使自定义对象持久化;
   2、将对象从一个地方传递到另一个地方。
   3、使程序更具维护性。
  

  json 模块     

import json
# ret = json.dumps(dict)  # 序列化
# res = json.loads(ret) # 反序列化

  json 在所有的语言之间都通用 : json序列化的数据 在python上序列化了 那在java中也可以反序列化
  能够处理的数据类型是非常有限的 : 字符串 列表 字典 数字
  字典中的key只能是字符串
  json
  dumps loads
  在内存中做数据转换 :
  dumps 数据类型 转成 字符串 序列化
  loads 字符串 转成 数据类型 反序列化
  dump load
  直接将数据类型写入文件,直接从文件中读出数据类型
  dump 数据类型 写入 文件 序列化
  load 文件 读出 数据类型 反序列化
  json是所有语言都通用的一种序列化格式
  只支持 列表 字典 字符串 数字
  字典的key必须是字符串

  pickle模块   

   json & pickle 模块

     用于序列化的两个模块

      json,用于字符串 和 python数据类型间进行转换

      pickle,用于python特有的类型 和 python的数据类型间进行转换

     pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load  (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)

   pickle模块:

    1.支持在python中几乎所有的数据类型
    2. dumps 序列化的结果只能是字节
    3.只能在python中使用
    4.在和文件操作的时候,需要用rb wb的模式打开文件
    5.可以多次dump 和 多次load

    

import pickle

dic = {(1,2,3):{'a','b'},1:'abc'}
dic1 = {(1,2,3):{'a','b'},2:'abc'}
dic2 = {(1,2,3):{'a','b'},3:'abc'}
dic3 = {(1,2,3):{'a','b'},4:'abc'}
with open('pickle_file','wb') as f:
    pickle.dump(dic, f)
    pickle.dump(dic1, f)
    pickle.dump(dic2, f)
    pickle.dump(dic3, f)

with open('pickle_file','rb') as f:
    while True:
        try:
            ret = pickle.load(f)
            print(ret)
        except EOFError:
            break

  

posted @ 2018-08-20 21:18  AndyStrack  阅读(187)  评论(0编辑  收藏  举报