python常用模块random,time,os,sys实例讲解

时间:2018-08-20
本文章向大家介绍python常用模块random,time,os,sys实例讲解,需要的朋友可以参考一下

一丶random模块

  取随机数的模块

#导入random模块
import random

#取随机小数:
r = random.random()     #取大于零且小于一之间的小数
print(r)    #0.7028485217376959
r = random.uniform(1,2)   #取大于一且小于二之间的小数
print(r)      #1.2376900963409765

#取随机整数
r = random.randint(2,8) #取大于二且小于八之间的整数
print(r)      #7
r = random.randrange(2,8,2) #取大于等于二且小于十之间的整数,每两个取一个
print(r)      #6

#随机选择一个返回
r = random.choice(["a","123",["dasd"],"das"])   #123
print(r)
#随机选择多个返回,返回的个数为函数的第二个参数
r = random.sample(["a","123",["dasd"],"das"],2) #['123', 'a']
print(r)

#打乱列表顺序
item = [1,3,5,7,9]
r = random.shuffle(item)  #只打乱,无返回值
print(r)
print(item)

练习题,随机生成大小写数字的验证码

def func(x=6,alpha=True):
    s = ""
    for i in range(x):
        num = str(random.randint(0,9))
        if alpha:
            alpha_upper = chr(random.randint(65,90))
            alpha_lower = chr(random.randint(97, 122))
            num = random.choice([num,alpha_lower,alpha_upper])
        s += num
    return s

print(func(4,alpha=False))
print(func())
验证码

二丶time模块

  表示时间的三种方式

    在python中,通常有这三种方式来表示时间:时间戳,元组(struct_time),格式化的时间字符串:

      (1)时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型.

      (2)格式化的时间字符串(Format String): "1999-12-16"

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

python中时间日期格式化符号:
python中时间日期格式化符号:

       (3)元组(strict_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,是否是夏令时)

索引(index) 属性(Attribute) 值(Values)
0 tm_year(年) 2018
1

tm_mon(月)

1-12
2 tm_mday(日) 1-31
3 tm_hour(时) 0-23
4 tm_min(分) 0-59
5 tm_sec(秒) 0-60
6 tm_wday(deekday) 0-6(0表示周一)
7 tm_yday(一年中的第几天) 1-366
8 tm_isdst(是否是夏令时) 默认为0

表示时间的几种格式:

#导入时间模块
import time

# time.sleep(3) #程序走到这儿会等待3s钟

# 时间戳时间   浮点型数据类型,以s为单位
t = time.time()     #1534752249.0591378
print(t)

#格式化时间
print(time.strftime("%Y-%m-%d %H:%M:%S"))  #strftime =  str format time
print(time.strftime('%c'))      #国外时间格式

# 结构化时间
# 时间元组,localtime将一个时间戳转换成当时时区的struct_time
struct_time = time.localtime()  # 北京时间
print(struct_time)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#    tm_hour=16, tm_min=9, tm_sec=8, tm_wday=0, tm_yday=232, tm_isdst=0)

小结:时间戳是计算机能够识别的时间,时间字符串是人能够看懂的时间,元组则是用来操作时间的

几种格式之间的转换

#时间戳时间转换成字符串时间
#获取当前时间戳
t = time.time()
print(t)    #1534753176.4760094
# 时间戳转换成结构化时间
ti = time.localtime(t)
print(ti)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#       tm_hour=16, tm_min=19, tm_sec=36, tm_wday=0, tm_yday=232, tm_isdst=0)
# 结构化时间转换成字符串时间
sti = time.strftime("%Y-%m-%d %H:%M:%S",ti)
print(sti)  #2018-08-20 16:22:06



# 字符串时间转换成时间戳时间
t  = "2018-08-20 16:22:06"
#字符串时间转换成结构化时间
st = time.strptime(t,"%Y-%m-%d %H:%M:%S")
print(st)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20,
#        tm_hour=16, tm_min=22, tm_sec=6, tm_wday=0, tm_yday=232, tm_isdst=-1)
#结构化时间转换成时间戳
ti = time.mktime(st)
print(ti)       #1534753326.0

 练习:

import time
ti_old = "2018-8-19 22:10:8"
ti_new = "2018-8-20 16:34:3"
true_time=time.mktime(time.strptime(ti_old,'%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime(ti_new,'%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                       struct_time.tm_mday-1,struct_time.tm_hour,
                                       struct_time.tm_min,struct_time.tm_sec))
#过去了0年0月0天18小时23分钟55秒
计算时间差

三丶sys模块

  sys模块时与python解释器交互的一个接口

import sys


print(sys.argv)     #['D:/Learn/day18/1.1.py']  程序本身的路径

for i in range(0,9):
    print(i)    #0
    sys.exit()  #遇到sys.exit()  退出程序,正常退出时exit(0),错误退出sys.exit(1)

print(sys.version)    #获取Python解释程序的版本信息
#3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

print(sys.path) #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
#"C:Program FilesPython36python.exe" D:/Learn/day18/1.1.py
#['D:\Learn\day18', 'D:\Learn', 'C:\Program Files\Python36\python36.zip',
# 'C:\Program Files\Python36\DLLs', 'C:\Program Files\Python36\lib',
# 'C:\Program Files\Python36', 'C:\Program Files\Python36\lib\site-packages',
# 'E:\pycharm\PyCharm 2018.1.3\helpers\pycharm_matplotlib_backend']

print(sys.platform)     #win32  返回操作系统平台名称

四丶os模块

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

import os

os.makedirs("name1/name2/name3")  #可生成多层递归目录
os.mkdir("name1")    #生成单级目录;相当于shell中mkdir dirname
os.rmdir("D:/Learn/day18/name1")  #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.removedirs("D:/Learn/day18/name1")   #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.listdir("D:/Learn/day18/name1")    #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove("name1")  #删除一个文件
os.rename("oldname","newname")  #重命名文件/目录
os.stat('path/filename')  #获取文件/目录信息

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

  未完待续........