day18 python
 
一.random模块
    取随机整数
import random
print(random.randint(1,2))                 #顾头顾尾
print(random.randrange(0, 100, 2))         #range版本的random
    
    取随机小数
print(random.random())                     #0.6871190861419696  #取 0 和 1 之间的小数:
print(random.uniform(1,2))                 #1.2328185234579951  #取范围内的小数
    
    从一个列表中随机抽取值
lst = [1,2,3,'bajie','wukong',[1,2]]
print(random.choice(lst))                   #从列表随机取一个值
print(random.sample(lst, 2))                #从列表随机取n个值; 当n = len(lst)时, 相当于打乱列表的顺序
    
    打乱一个列表的顺序
lst = [1,2,3,'bajie','wukong',[1,2]]
random.shuffle(lst)                         #洗牌, 牌不变, 顺序变了: 不返回新lst, 改的是源数据, 实际比上面的n = len(lst)节省空间
print(lst)
    
二.time模块
    time.sleep()
time.sleep(5)
    
    时间格式
        格式化时间: 字符串数据类型, '2019-09-01 09:26:00'
print(time.strftime('%Y-%m-%d'))    #Y m d H M S (a A(Sun Sunday)) (b B(Sep September)) I(12个小时) c(Sun Sep  1 09:43:02 2019)
        时间戳时间: 浮点型数据类型, 1567301229.3193293, 以s为单位, 是从1970-01-01 00:00:00开始计算的偏移量
print(time.time())
        结构化时间: 类元组类型, time.struct_time(tm_year=2019, tm_mon=9, tm_mday=1, tm_hour=9, tm_min=31, tm_sec=21, tm_wday=6, tm_yday=244, tm_isdst=0)
        tm_isdst=0 是否夏令时, 拿到的是北京时间: 夏天时把时间调快两个小时, 冬天时调回去.
        出现的目的: 是为了作为时间戳时间和格式化时间的中间状态来使用的
print(time.localtime())         #拿到的是北京本地时间
print(time.gmtime())            #拿到的是英国伦敦时间
print(time.localtime().tm_year)
    
    时间格式转换, 格式化时间和时间戳时间不能直接转换
print(time.localtime(1567301229))
print(time.strftime('%Y-%m-%d', time.localtime(1567301229)))    #时间戳转成字符串时间
 
print(time.strptime('2019-09-01', '%Y-%m-%d'))                  #告诉p程序你的字符串时间的格式是什么
print(time.mktime(time.strptime('2019-09-01', '%Y-%m-%d')))     #字符串转成时间戳时间
 
三.sys模块
    sys模块不是和os打交道的, 而是和python解释器打交道的
    sys.argv
print(sys.argv)     #获取程序名(python命令后面的第0个值), 以及其他位置参数, 返回一个列表
    
    sys.path
print(sys.path)     #python解释器, import的时候去找(模块)文件的路径, 返回的是列表, 顺序查找,找完即停止查找
                    #第一个元素是当前路径,所以你起的模块名会覆盖python的模块名的原因
    
    sys.modules
print(sys.modules)          #{import到内存中的所有模块的名字: 内存地址}, 返回的是字典
print(sys.modules['sys'])   #<module 'sys' (built-in)>
print(sys)                  #<module 'sys' (built-in)>
 
四.os模块
    和操作系统打交道的模块
        和文件和文件夹的创建有关系的
os.rename()                     #默认会把原来的文件干掉                                           
os.remove()                     #删文件
os.makedirs('dir1/dir2')        #mkdir -p
os.mkdir('dir3')                #mkdir
os.rmdir('dir1/dir2')           #dir2没了, dir1还在    #目录下有东西就删不了
os.removedirs('dir1/dir2')      #dir2和dir1全没了,     #目录下有东西就删不了
os.listdir()                    #返回一个列表, 里面都是相对路径
print(os.stat('practice.py'))
#os.stat_result(st_mode=33206, st_ino=11821949021878792, st_dev=216124917, st_nlink=1, st_uid=0, st_gid=0, st_size=69713, st_atime=1567312230, st_mtime=1567312223, st_ctime=1565770063)
#             inode保护模式   iNode节点号            inode驻留的设备      inode的连接数  uid      gid     字节单位的大小  上次访问时间         最后一次修改时间   操作系统对应报告的ctime
        
    和执行操作系统的命令有关系的
os.system('dir')           #执行命令行的命令, 没有返回值, 和exec()一样去执行就完了
print(os.popen('dir'))     #返回的是对象    #基本不用, 因为没有subprocess强大
print(os.popen('dir').read())
print(os.getcwd())          #获取当前工作路径(current work directory), 并不是指当前文件所在的目录
os.chdir()                  #切换当前的工作目录
 
    和操作系统的路径有关系的
os.path.join()                          #路径拼接, linux 和 window的路径分隔符会自己判断然后加上
 
print(os.path.abspath('practice.py'))   #1.把不规范的杠改成操作系统默认的格式  2."拼接"成绝对路径(你写什么它就拼什么)
print(os.path.split('C:/Users/THINKPAD/PycharmProjects/s15/day01'))     #用斜杠分成两部分, 返回一个元组
print(os.path.dirname('C:/Users/THINKPAD/PycharmProjects/s15/day01'))   #os.path.split 前面那项
print(os.path.basename('C:/Users/THINKPAD/PycharmProjects/s15/day01'))  #os.path.split 后面那项
 
print(os.path.exists('C:/Users/THINKPAD/PycharmProjects/s15/day01'))
print(os.path.isdir('C:/Users/THINKPAD/PycharmProjects/s15/day01'))
print(os.path.isfile('C:/Users/THINKPAD/PycharmProjects/s15/day01'))
print(os.path.isabs('C:/Users'))
 
print(os.path.getatime())
print(os.path.getmtime())
print(os.path.getsize())                                                #文件大小   #文件夹大小至少都是4kB
 
 
 
 
练习
验证码:
    # 4位数字验证码
    # 6位数字验证码
    # 6位数字+字母验证码
import random
 
def code(num, flags='d'):
    s = ''
    for i in range(num):
        rand_d = str(random.randint(0,9))           #random digit
        rand_a = chr(random.randint(97, 97+25))     #random alpha lowwer
        rand_A = chr(random.randint(65, 65+25))     #random appha upper
 
        if flags == 'd':                            #digit
            s += rand_d
        if flags == 'a':                            #digit + alpha
            s += random.choice((rand_d,rand_a,rand_A))
    return s
 
print(code(4))
print(code(6))
print(code(4, flags='a'))
print(code(6, flags='a'))
 
 
 
练习
    1. 查看一下 2000000000 时间戳时间表示的年月日
print(time.strftime('%Y-%m-%d',time.localtime(2000000000)))
    
    2. 将2008-8-8转换成时间戳时间
print(time.mktime(time.strptime('2008-8-8','%Y-%m-%d')))
    
    3. 请将当前时间的当月一号的时戳取出来 - 函数
def func(localtime):
    str_time = '%s-%s-%s %s:%s:%s' % (localtime.tm_year,
                                     localtime.tm_mon,
                                     1,
                                     localtime.tm_hour,
                                     localtime.tm_min,
                                     localtime.tm_sec)
    return time.mktime(time.strptime(str_time, '%Y-%m-%d %H:%M:%S'))
print(func(time.localtime()))
    
    4. 计算时间差
        2018-8-19 22:10:8 2018-8-20 11:07:3
        经过了多少时分秒
def func(start_time, end_time):
    sub_timestamp = abs(time.mktime(time.strptime(end_time,'%Y-%m-%d %H:%M:%S')) - time.mktime(time.strptime(start_time,'%Y-%m-%d %H:%M:%S')))
    #return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(sub_time))  #1970-01-01 20:56:55
    sub_gmtime = time.gmtime(sub_timestamp)
    return '过去了%s年%s月%s日%s时%s分%s秒' % (sub_gmtime.tm_year-1970,
                                      sub_gmtime.tm_mon-1,
                                      sub_gmtime.tm_mday-1,
                                      sub_gmtime.tm_hour,
                                      sub_gmtime.tm_min,
                                      sub_gmtime.tm_sec)
 
print(func('2018-8-20 11:07:3','2018-8-19 22:10:8'))
    
    5.统计文件夹大小(文件夹下面所有文件的大小)
        递归求
import os
filepath = r'C:\Users\THINKPAD\PycharmProjects\s15'
def func(filepath):
    files = os.listdir(filepath)
    size_sum = 0
    for file in files:
        file_path = os.path.join(filepath, file)    #file_path为啥不能用 path: 在循环里, 下次循环的path变了,
        if os.path.isdir(file_path):
            size = func(file_path)                  #如果是目录, 目录下面返回一个总size, 要加到 size_sum里面
            size_sum += size
        else:
            size = os.path.getsize(file_path)
            size_sum += size
    return size_sum
print(func(filepath))
        循环求: 堆栈的思想
size_sum = 0
lst = [r'C:\Users\THINKPAD\PycharmProjects\s15\day01']
while lst:
    filepath = lst.pop()
    for name in os.listdir(filepath):
        file_path = os.path.join(filepath, name)
        if os.path.isdir(file_path):
            lst.append(file_path)                           #循环解决递归的方法
        else:
            size = os.path.getsize(file_path)
            size_sum += size
print(size_sum)
 
 
 
 
 
 
 
 

day18 python模块 random time sys os模块的更多相关文章

  1. python 常用模块(一): random , time , sys , os模块部分知识.

    1.常用模块:(1)collectiaons模块 (2)与时间相关  time模块 (3)random模块 (4)os模块 (5)sys模块 (6) 序列化模块: json  ,   pickle 2 ...

  2. day2_python的数据类型,sys,os模块,编码解码,列表,字典

    今天主要了解了python的数据类型,sys,os模块,编码解码,列表,字典 1.数据类型:int(python3没有长整型)文本总是Unicode,str表示二进制用byte类表示布尔型:True( ...

  3. oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections

    今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...

  4. Python基础(11)_python模块之time模块、rando模块、hashlib、os模块

    一.模块 1.什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 模块的本质:模块的本质是一个py文件 2.模块分为三类:1)内置模块:2)第三方模块: ...

  5. sys,os,模块-正则表达式

    # *__conding:utf-8__* """"我是注释""" sys,os模块 import sysimport os pr ...

  6. Python的路径操作(os模块与pathlib模块)

    Python的路径操作(os模块与pathlib模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.os.path模块(Python 3.4版本之前推荐使用该模块) #!/u ...

  7. day15-Python运维开发基础(json序列化模块、random / time / zipfile / OS模块函数)

    1. json序列化模块 # ### json """ 所有编程语言都能够识别的数据格式叫做json,是字符串 json: 将数据类型序列化成字符串 pickle:将数据 ...

  8. python模块知识二 random -- 随机模块、序列化 、os模块、sys -- 系统模块

    4.random -- 随机模块 a-z:97 ~ 122 A-Z :65 ~ 90 import random #浮点数 print(random.random())#0~1,不可指定 print( ...

  9. time random sys os 模块

    时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日 ...

随机推荐

  1. 吐血整理 | 1000行MySQL学习笔记,不怕你不会,就怕你不学!

    / Windows服务 / / 连接与断开服务器 / / 数据库操作 / ------------------ / 表的操作 / ------------------ / 数据操作 / ------- ...

  2. luogu P1307 数字反转 x

    题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 输入 ...

  3. 数据库的特性与隔离级别和spring事务的传播机制和隔离级别

    首先数据库的特性就是 ACID: Atomicity 原子性:所有事务是一个整体,要么全部成功,要么失败 Consistency 一致性:在事务开始和结束前,要保持一致性状态 Isolation 隔离 ...

  4. 减轻Temporal AA 的 拖影问题(ghosting)

    Temporal AA 效率高,但是有拖影等问题,UE4中可以如下修改减轻拖影问题: 搜索到PostProcessTemporalAA.usf文件,打开,找到 #define AA_DYNAMIC_A ...

  5. [CSP-S模拟测试]:可爱的精灵宝贝(搜索)

    题目描述 $Branimirko$是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由$1$到$n$.刚开始玩家在 ...

  6. 牛客 Rabbit的数列 (线段树维护值为x的个数+区间覆盖)

    https://ac.nowcoder.com/acm/contest/907/C 链接:https://ac.nowcoder.com/acm/contest/907/C来源:牛客网 题目描述 Ra ...

  7. 解决Docker容器 iptables问题---docker: Error response from daemon: driver failed programming external connectivity on endpoint quizzical_thompson

    一.问题现象 最近在研究Docker容器日志管理时,启动容器出现iptables相关报错,具体问题如下 运行容器 [root@node-11 ~]# docker run -d -p 24224:24 ...

  8. hypermesh生成MNF柔性体

    软件HyperworksX 2019: 该版本默认的是optistruct模板 1.导入几何→分网→材料定义(注意单位,建议统一mks单位制)→定义单元属性→创建刚性单元: 2.创建load coll ...

  9. 【转】 C语言深度解剖读书笔记(1.关键字的秘密)

    本文出处:http://blog.csdn.net/mbh_1991/article/details/10149805 开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有 ...

  10. MIME TYPE是什么?

    首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME T ...