random模块(随机数模块)

  取随机小数:

    random.random()  取0-1之间的小数

    random.uniform(x, y)  取x-y之间的小数

  取随机整数:

    random.randint(x, y)  取x-y之间的整数([x, y]顾头也顾尾)

    random.randrange(x, y)  取x-y之间的整数([x, y)顾头不顾尾)

    random.randrange(x, y, z)  取x-y之间的整数([x, y)顾头不顾尾,z为步长)

  随机抽取:

    random.choice(lst)  从列表中随机抽取一个值

    random.sample(lst, n)  从列表中随机抽取n个值

  打乱顺序:

    random.shuffle(lst)  将列表的顺序打乱

#默认6位数字字母可变长度验证码
def code(n = 6,alpha = True):
s = ''
for i in range(n): #取验证码长度
num = str(random.randint(0, 9)) #随机抽取数字
if alpha:
alpha_upper = chr(random.randint(65, 90)) #通过ascii码取大写字母
alpha_lower = chr(random.randint(97, 122)) #通过ascii码取小写字母
num = random.choice([num, alpha_upper, alpha_lower]) #从随机生成的数字,大写字母,小写字母中随机抽取一个作为验证码的一位
s += num #拼接验证码
return s
print(code(4,False))
print(code(alpha=False))
print(code(4))

time模块(时间模块)

  时间格式:时间戳,格式化时间,结构化时间

  时间戳(浮点型数据类型,以s为单位,计算机计算时间用): 1000000000

  格式化时间(字符串数据类型):  1990-1-20

  结构化时间: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=22, tm_hour=17, tm_min=9, tm_sec=45, tm_wday=2, tm_yday=234, tm_isdst=0)

  时间戳:

print(time.time())  #获取当前时间时间戳
结果:1534322642.617272

  格式化时间(%Y-%m-%d %H:%M:%S):

print(time.strftime('%Y-%m-%d %H:%M:%S')) # str format time
print(time.strftime('%y-%m-%d %H:%M:%S')) # str format time
结果:1990-08-20 17:12:10
90-08-20 17:12:10

  结构化时间(是元组,只能读取,不能修改):

struct_time = time.localtime()  # 北京时间
print(struct_time)
print(struct_time.tm_mon)
结果:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=22, tm_hour=17, tm_min=15, tm_sec=10, tm_wday=2, tm_yday=234, tm_isdst=0)
8

  time.localtime()  获取当地的结构化时间(在此为北京时间)

  time.gmtime()    获取utc结构化时间(北京时间减去八小时)

  time.strftime('%Y-%m-%d %H:%M:%S')  获取格式化时间 (1990-01-20 16:20:13)

  time.strptime('2008-8-8', '%Y-%m-%d')    将格式化时间转换为结构化时间

  time.mktime(结构化时间)  将结构化时间转换为时间戳

各种格式的时间之间的转换(时间戳与格式化时间不能直接转换)

  时间戳-time.localtime()/time.gmtime()->结构化时间-time.strftime->格式化时间

  时间戳<-time.mktime()-结构化时间<-time.strptime()-格式化时间

时间戳-->格式化时间

struct_time = time.localtime(time.time())      #获取结构化时间并结构化
ret = time.strftime('%y-%m-%d %H:%M:%S', struct_time) #将结构化时间转换为格式化时间
print(ret)
结果:
08-08-20 16:20:13  

格式化时间-->时间戳

struct_time = time.strptime('2008-8-8', '%Y-%m-%d')
res = time.mktime(struct_time)
print(res)
结果:
1218124800.0

获取当前月1号的时间戳

def get_time():
st = time.localtime()
st2 = time.strptime('%s-%s-1' % (st.tm_year, st.tm_mon), '%Y-%m-%d')
return time.mktime(st2)
print(get_time())  

计算时间差

str_time1 = '2008-8-8 20:10:8'
str_time2 = '2008-8-9 13:07:3'
struct_t1 = time.strptime(str_time1, '%Y-%m-%d %H:%M:%S')
struct_t2 = time.strptime(str_time2, '%Y-%m-%d %H:%M:%S')
timestamp1 = time.mktime(struct_t1)
timestamp2 = time.mktime(struct_t2)
sub_time = timestamp2 - timestamp1 #获取时间戳差值
gm_time = time.gmtime(sub_time) #将时间戳转换为utc时间
# # 1970-1-1 00:00:00
print('过去了%d年%d月%d天%d小时%d分钟%d秒' % (gm_time.tm_year-1970, gm_time.tm_mon-1,
gm_time.tm_mday-1, gm_time.tm_hour,
gm_time.tm_min, gm_time.tm_sec))

sys模块(与python解释器交互的接口)

 sys.argv  命令行参数list,第一个元素是程序本身路径

 sys.exit(n)  退出程序,正常退出时exit(0),错误退出sys.exit(1)

 sys.version  获取python解释程序的版本信息

 sys.path   返回模块的搜索路径,初始化时使用pythonpath环境变量的值

 sys.platform  返回操作系统平台名称

 sys.modules  所有被导入的模块的内存地址都存在sys.module里 

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

 对文件夹或文件进行相关操作(创建文件夹, 删除文件夹, 重命名文件, 删除文件, 获取文件信息, 获取文件目录)

os.makedirs('dir1/dir2')        #生成多层递归目录   在当前路径生成多层目录
os.mkdir('dir3') #生成单层目录
os.mkdir('dir3/dir4') #在已经存在的dir3文件下生成一个dir4文件
#只能删除空文件夹
os.rmdir('dir3/dir4') #删除dir3文件下的dir4文件
os.removedirs('dir3/dir4') #删除dir3和dir4文件
os.removedirs('dir1/dir2') #删除dir1和dir2文件
os.stat(文件路径) #获取文件信息
os.listdir 列出指定目录下所有文件和子目录,包括隐藏文件,并以列表方式打印
os.rename('oldname', 'newname') #重命名文件
#system和popen都相当于运行shell命令
os.system()是执行字符串数据类型的命令行代码(运行shell命令,直接显示)
os.popen().read()也是执行字符串数据类型的命令行代码(运行shell命令,获取执行结果)
os.getcwd() current work dir 当前工作目录(python脚本工作的目录路径)
os.chdir('dirname') 改变当前的工作目录,相当于shell下的cd
os.path.join(path1,path2) 将多个路径组合后返回
os.path.abspath(path) 返回path的绝对路径
os.path.split(path) 将path分割成目录和文件名以元组返回
os.path.dirname(path) 返回path的目录,就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path的文件名,(如果path以/或\结尾,就返回空值.)是os.path.split(path)的第二个元素
os.path.exists(path) 判断path是否存在,并返回bool值
os.path.isabs(path) 判断是否是绝对路径
os.path.isfile(path) 判断是否是文件
os.path.isdir(path) 判断是否是文件夹
os.path.getatime(path) 返回path指向的路径的最后访问时间
os.path.getmtime(path) 返回path指向的路径的最后修改时间
os.path.getsize(path) 返回path的大小

  使用递归计算路径文件大小

import os
def file_all(file_path):
file_size = 0
file_lst = os.listdir(file_path)
for file_name in file_lst:
file = os.path.join(file_path, file_name)
if os.path.isdir(file):
size = file_all(file)
file_size += size
else:
file_size += os.path.getsize(file)
return file_size

  使用循环计算路径文件大小

lst = [r'C:\user\123',]
size_sum = 0
while lst:
path = lst.pop() #删除列表元素,通过pop得到删除的值
path_list = os.listdir(path) #获取path目录下的所有文件
for name in path_list:
abs_path = os.path.join(path, name)
if os.path.isdir(abs_path): # 文件夹的逻辑
lst.append(abs_path)
else:
size_sum += os.path.getsize(abs_path)
print(size_sum)

序列化模块(json和pickle)

json模块(一种通用的序列化格式)

  json能够操作的数据类型十分有限(字符串,字典,列表,数字.并且字典中的键必须是字符串)

  序列化:

    json.dumps()  其它数据类型  转换成  字符串/字节  序列化

    json.dump()    其它数据类型  写入  文件中  序列化

  反序列化:

    json.loads()   字符串/字节  转换成其他数据类型  反序列化

    json.load()     文件中  读出  其他数据类类型  反序列化

  区别:

    dumps, loads:     在内存中做数据转换

    dump,load:     直接将数据类型写入文件,直接从文件中读出数据类型

    json不支持连续的存取

pickle模块(支持python中的所有数据类型)

  dumps序列化的结果只能是字节,只能在python中使用,在进行文件操作的时候需要用rb和wb模式打开文件.

    可以多次dump和多次load

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

random,time,sys,os,序列化模块的更多相关文章

  1. Python-hashlib、OS、Random、sys、zipfile模块

    # print(sys.version) #python 版本 # print(sys.path) # print(sys.platform) #当前什么系统 # print(sys.argv) #当 ...

  2. Python之常用模块(re,时间,random,os,sys,序列化模块)(Day20)

    一.时间模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 在Python中表示时间的三种方式:时间戳,元组(s ...

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

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

  4. random os 序列化 模块模块 随机选择

    # 1 random 模块 随机选择# import random#随机取小数# ret = random.random() #空是0到1之间的小数字# print(ret)# # 0.0799728 ...

  5. random,time,sys,os

    import random print(random.random()) #(0,1)大于0且小于1之间的小数 print(random.randint(1,3)) #大于等于1且小于等于3之间的整数 ...

  6. python sys os hashlib_MD5 模块

    模块 内置模块是Python自带的功能,在使用内置模块相应的功能时,需要[先导入]再[使用] 一.sys 用于提供对Python解释器相关的操作: ? 1 2 3 4 5 6 7 8 9 sys.ar ...

  7. 软件开的目录规范+sys,os,time模块

    —————————————————————————————————————————————————————————————————— start.py import sys,os # print(__ ...

  8. 常用模块---sys&logging&序列化模块(json&pickle)

    sys 模块 sys.argv 命令行参数List,第一个元素是程序本身路径,通常用来避免io 阻塞 print('欢迎进入') info=sys.argv ': print('login succe ...

  9. 第十篇、模块一、sys\os\hashlib模块的应用

    一.模块分为三种 1)自定义模块 2)第三方模块 3)内置模块 如何导入模块? 下面两种: 1)import 模块名字  as 别名(重新给模块命名) 2)from  模块名字  import 功能( ...

随机推荐

  1. jq随机生成数字加字母的字符串

    html代码: <dl class="row"> <dt class="tit"> <label for="title& ...

  2. PHP FILTER_SANITIZE_NUMBER_INT 过滤器

    定义和用法 FILTER_SANITIZE_NUMBER_INT 过滤器删除数字中所有非法的字符. 该过滤器允许所有数字以及 . + - Name: "number_int" ID ...

  3. PHP FILTER_SANITIZE_STRIPPED 过滤器

    定义和用法 FILTER_SANITIZE_STRIPPED 过滤器去除或编码不需要的字符. 该过滤器是 FILTER_SANITIZE_STRING 过滤器的别名 该过滤器删除那些对应用程序有潜在危 ...

  4. 网格图必经点+dfs——cf1214D

    先正着走一次把所有可行路径标记出来,然后倒着走两条路径,一条是能向下就向下的路径,另一条能向右就向右. 如果这两条路径相交,那么(1,1)-(n,m)路径上比有个必经点,把这个必经点封上,答案是1,如 ...

  5. 64 计算机图形学入门(1)——OpenGL环境配置与图形流水线(图像管线)

    0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一 ...

  6. XSS漏洞的渗透利用另类玩法

    XSS漏洞的渗透利用另类玩法 2017-08-08 18:20程序设计/微软/手机 作者:色豹 i春秋社区 今天就来讲一下大家都熟悉的 xss漏洞的渗透利用.相信大家对xss已经很熟悉了,但是很多安全 ...

  7. IDM自定义报错页面

    由于用户两次重复单点登录会跳转至原生态ORACLE的错误页面页面.请提供配置方法.原因:是由于重复登录导致的.解决方案:Oracle官方给出了具体的解决方案,具体如下:I.创建战争档案a.创建目录&q ...

  8. jeecg随笔-3.X的生成后配置

    生成后按以上步骤进行配置即可.

  9. 洛谷 P1613 跑路 (倍增 + DP + 最短路)

    题目链接:P1613 跑路 题意 给定包含 \(n\) 个点和 \(m\) 条边的有向图,每条边的长度为 \(1\) 千米.每秒钟可以跑 \(2^k\) 千米,问从点 \(1\) 到点 \(n\) 最 ...

  10. POJ 3468 A Simple Problem with Integers (分块)

    Description You have \(N\) integers, \(A_1, A_2, ... , A_N\). You need to deal with two kinds of ope ...