Python学习笔记-Day23-模块(时间、随机数、sys、os)

 

内容大纲

一、时间模块

二、随机数模块

三、sys模块

四、os模块

 

一、时间模块

时间的三种格式

  时间戳时间:timestamp = time.time()  ,0是伦敦时间1970/1/1 0:0:0,北京时间1790/1/1 8:0:0

  结构化时间:struct_time= time.localtime()

  格式化时间:format_time = time.strfrime(fmt)

几种格式:

            %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 当前时区的名称
            %% %号本身

 

三种时间格式之间互相转化:

时间戳时间----->结构化时间:struct_time=time.localtime(timestamp) 或 struct_time=time.gmtime(timestamp)转化成伦敦时间

结构化时间----->格式化时间:format_time= time.strftime(fmt,struct_time)

格式化时间----->结构化时间:struct_time= time.strptime(format_time,fmt)

结构化时间----->时间戳时间:timestamp= time.mktime(struct_time)

例题一:求两个时间的差

import time
def timediff(time1,time2):
    struct_time1 = time.strptime(time1,'%Y-%m-%d %H:%M:%S')
    stamp_time1 = time.mktime(struct_time1)
    struct_time2 = time.strptime(time2, '%Y-%m-%d %H:%M:%S')
    stamp_time2 = time.mktime(struct_time2)
    diff = abs(stamp_time1-stamp_time2)
    struct_time = time.gmtime(diff)
    return '%s年%s月%s天%s小时%s分钟%s秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_yday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec)
ret = timediff('2018-9-8 23:34:12','2018-9-7 22:33:11')
print(ret)  # 0年0月1天1小时1分钟1秒

例题二:计算本月1号的时间戳:

import time
def func():
    format_time = time.strftime('%Y-%m-1')
    struct_time = time.strptime(format_time,'%Y-%m-1')
    timestamp = time.mktime(struct_time)
    return timestamp
ret = func()
print(ret)

 

二、随机数模块

1、随机取小数

  random.random():随机取(0,1)之间的小数

  random.uniform(m,n):随机取(m,n)之间的小数

2、随机取整数:

  random.randint(m,n):随机取[m,n]之间的整数

  random.randrange(m.n):随机取[m,n)之间的整数

  random.randrange(m,n,s):按步长s随机取 [m,n)之间的整数

3、随机取列表、元组、字符串、range中的数

  random.choice(lst):随机从列表lst中取一个数

  random.example(lst,n):随机从列表中取n个数

4、乱序

  random.shuffle(lst):打乱原列表

例题1:生成验证码,包含数字和大小写字母

import random
def get_code(n=4,alpha=True):
    code = ''
    for i in range(n):
        c = str(random.randint(0,9))
        if alpha is True:
            alpha_upper = chr(random.randint(65,90))
            alpha_lower = chr(random.randint(97,122))
            c = random.choice([c,alpha_upper,alpha_lower])
        code += c
    return code
ret = get_code()
print(ret)  #  4r79
ret1 = get_code(n=6,alpha=False)
print(ret1)  # 246842

例题2:发红包

import random
def lucky_money(money,people_num):
    lst = random.sample(range(money*100),people_num-1)
    lst.sort() # 按大小排序
    lst.insert(0,0)
    lst.append(money*100)
    money_lst = []
    for i in range(people_num):
        getmoney = lst[i+1] - lst[i]
        money_lst.append(getmoney/100)
    return money_lst

ret = lucky_money(100,10)
print(ret)  # [8.43, 1.54, 19.19, 5.52, 1.91, 1.32, 18.36, 6.03, 13.08, 24.62]

三、os模块

1、和文件夹、文件相关

os.mkdir('diename'):在当前文件夹下生成单级目录,若该目录已经存在会报错

os.makedirs('dirname1/dirname2/dirname3'):在当前文件夹下生成多级目录

os.rmdir('dirname'):删除当级的空目录,若目录不为空不能删除并报错

os.removedirs('dirname1/dirname2/dirname3'):若目录为空,则删除,并递归到上一级目录,若也为空则删除,知道不为空的目录

lst = os.listdir('dirname') :列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式返回

os.remove('filename'):删除一个文件,不能删除目录

os.remove('newname','oldname'):重命名一个文件/目录

ret = os.stat('file_path/dirname'):获取文件/目录信息

2、和路径相关:

path = os.path.abspath(path):返回path的规范化路径

tuple = os.path.split(path):将path分割成路径和文件名,以二元组方式返回

dir = os.path.dirname(path):获取文件的目录,就是split元组的第一个元素

filename = os.path.basename(path) :获取一个路径的文件名,即split元组的第二个元素

os.path.exists(path) :判断路径是否存在

os.path.isabs(path):判断路径是否是绝对路径,该路径不一定存在

os.path.isfile(path):判断path路径是不是一个存在的文件

os.path.isdir(path) :判断path是不是一个存在的文件

path = os.path.join('path1','path2','path3'...):将多个路径组合后返回,第一个绝对路径之前的参数会被忽略

os.path.getatime(path):返回path所指向的文件或目录的最后访问时间

os.path.getmtime(path):返回path所指向的文件或目录的最后修改时间

os.path.getsize(path):返回path指向的文件或目录的大小,若path指向目录,则大小是4096的倍数

3、和python程序的工作目录相关

os.getcwd():获取当前的工作目录,即当前python脚本工作的目录路径

os.chdir('dirname') :改变当前脚本工作目录;相当于shell下的cd

4、操作系统命令相关

os.system('base command') :运行shell命令

os.popen('base command').read():运行shell命令,获取执行结果

例题1:获取当前文件的上上级目录

import os
base_path = os.path.dirname(os.path.dirname(__file__))
print(base_path)  #  C:/python

例题2:计算一个文件夹的大小

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---

内容大纲

一、时间模块

二、随机数模块

三、sys模块

四、os模块

posted @ 2018-09-13 15:41  whuitian  阅读(261)  评论(0编辑  收藏  举报